私はZF2.0 betaを学習しています。 ZF1では、コントローラーをオンザフライでレイアウトを変更できます。
Zend_Layout::getMvcInstance()->setLayout('layoutname');
しかしZF2.では、Zend\LayoutクラスにはメソッドgetMvcInstance()がありません。依存性注入を使用して作成できると思いますが、確かではありません。
ZF2は開発中のため、現在の動作を保証することはできず、ZF2が安定した状態に達したときの動作になります。
ただし、Zend\Mvcの新しいビューレイヤーは最近マージされたので、現在のマスターでこれを実行できるはずです。
public function somethingAction ()
{
// Do some intelligent work
$this->layout('layout/different');
}
アクションでテンプレートを設定するために見つけた最良の方法は次のとおりです
public function someAction() {
$viewModel = new ViewModel();
$viewModel->setTemplate('layout/custom');
return $viewModel;
}
あなたのmodule.config.php
適切な値を設定していることを確認してくださいtemplate_map
道。
'view_manager' => array(
'template_map' => array(
'layout/custom' => __DIR__ . '/../view/layout/custom.phtml'
),
),
public function someAction() {
$layout = $this->layout();
$layout->setTemplate('layout/custom');
$viewModel = new ViewModel();
return $viewModel;
}
上記のヒントを試しました。
public function somethingAction ()
{
// Do some intelligent work
$this->layout('layout/different');
}
このスニペットで正しい結果を得ました。
public function someAction() {
$viewModel = new ViewModel();
$viewModel->setTemplate('layout/custom');
return $viewModel;
}
両方のレイアウト(デフォルト&現在のモジュール)をフェッチしました。
bootstrapまたはdiを使用する場合は、レイアウトを設定する必要があります。Diの例:
'Zend\View\Resolver\TemplateMapResolver' => array(
'parameters' => array(
'map' => array(
'layout/different' => __DIR__ . '/../view/layout/different.phtml',
),
),
),