1.6. レイアウト

メインの「内部」ビューテンプレートを「外部」レイアウトテンプレートでラップするには、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 オブジェクト内で実行されます。これは以下を意味します:

  • ビューに割り当てられたすべての変数がレイアウトと共有されます。

  • すべてのヘルパーがビューとレイアウトの間で共有されます。

この共有状況により、ビューはレイアウトが実行される前にデータとヘルパーを変更することができます。