メインの「内部」ビューテンプレートを「外部」レイアウトテンプレートでラップするには、setLayout()
を呼び出して2番目のステップ用の2番目の「外部」テンプレートを選択します。(レイアウトが設定されていない場合、2番目のステップは実行されません。)
例えば、browse
という名前のビューテンプレートがすでにあるとします。そのビューをラップするための default
という名前のレイアウトテンプレートがあるかもしれません。default.php
レイアウトテンプレートは以下のようになります:
<html>
<head>
<title>My Site</title>
</head>
<body>
{{= getContent() }}
</body>
</html>
その後、Template オブジェクトにビューとレイアウトのテンプレートを設定し、それを呼び出すことができます:
$template->setView('browse');
$template->setLayout('default');
$output = $template();
内部ビューテンプレートからの出力は自動的に保持され、Template オブジェクトの getContent()
メソッドを通じて利用可能になります。レイアウトテンプレートは getContent()
を呼び出して、内部ビューの結果を外部レイアウトテンプレートに配置します。
注意:
ビューテンプレート内から
setLayout()
を呼び出すこともでき、ビューロジックの一部としてレイアウトを選択することができます。
ビューテンプレートとレイアウトテンプレートは両方とも同じ Template オブジェクト内で実行されます。これは以下を意味します:
ビューに割り当てられたすべての変数がレイアウトと共有されます。
すべてのヘルパーがビューとレイアウトの間で共有されます。
この共有状況により、ビューはレイアウトが実行される前にデータとヘルパーを変更することができます。