ZF2.0 betaを学習しています。ZF1 では、コントローラーでオンザフライでレイアウトを変更できます。
Zend_Layout::getMvcInstance()->setLayout('layoutname');
しかし、ZF2.0 ではZend\Layout クラスに getMvcInstance() メソッドがありません。依存性注入を使用して作成できると思いますが、わかりません。
ZF2.0 betaを学習しています。ZF1 では、コントローラーでオンザフライでレイアウトを変更できます。
Zend_Layout::getMvcInstance()->setLayout('layoutname');
しかし、ZF2.0 では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;
}
両方のレイアウト(デフォルトと現在のモジュール)を取得しました。
また、ブートストラップまたは di の使用時にレイアウトを設定する必要があります。例:
'Zend\View\Resolver\TemplateMapResolver' => array(
'parameters' => array(
'map' => array(
'layout/different' => __DIR__ . '/../view/layout/different.phtml',
),
),
),