26

ZF2.0 betaを学習しています。ZF1 では、コントローラーでオンザフライでレイアウトを変更できます。

Zend_Layout::getMvcInstance()->setLayout('layoutname');

しかし、ZF2.0 ではZend\Layout クラスに getMvcInstance() メソッドがありません。依存性注入を使用して作成できると思いますが、わかりません。

4

5 に答える 5

57

ZF2 は大部分が開発中であり、現在の動作を保証することはできません。ZF2 が安定した状態になったときに動作するようになるでしょう。

ただし、Zend\Mvc からの新しいビュー レイヤーは最近マージされたので、現在のマスターでこれを実行できるはずです。

public function somethingAction () 
{
    // Do some intelligent work

    $this->layout('layout/different');
}
于 2012-02-23T13:24:53.177 に答える
7

アクションでテンプレートを設定するために私が見つけた最良の方法は次のとおりです

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'
    ),
),
于 2012-12-01T23:58:19.920 に答える
7
public function someAction() {
    $layout = $this->layout();
    $layout->setTemplate('layout/custom');
    $viewModel = new ViewModel();
    return $viewModel;
}
于 2013-08-05T15:00:49.347 に答える
3

上記のヒントを試してみました。

public function somethingAction () 
{
    // Do some intelligent work

    $this->layout('layout/different');
}

このスニペットで正しい結果が得られました。

public function someAction() {
    $viewModel = new ViewModel();
    $viewModel->setTemplate('layout/custom');

    return $viewModel;
}

両方のレイアウト(デフォルトと現在のモジュール)を取得しました。

于 2013-01-02T13:28:18.913 に答える
3

また、ブートストラップまたは di の使用時にレイアウトを設定する必要があります。例:

    'Zend\View\Resolver\TemplateMapResolver' => array(
        'parameters' => array(
            'map'  => array(
            'layout/different' => __DIR__ . '/../view/layout/different.phtml',
            ),
        ),
    ),
于 2012-04-27T12:25:11.593 に答える