更改Zend Framework 2.0控制器中的布局

Ale*_*tau 26 php zend-framework zend-framework2

我正在学习ZF2.0测试版.在ZF1中,我们可以在控制器中动态更改布局:

Zend_Layout::getMvcInstance()->setLayout('layoutname');
Run Code Online (Sandbox Code Playgroud)

但是在ZF2.0中, Zend\Layout类没有方法getMvcInstance().我认为它可以使用依赖注入但不确定.

Jur*_*man 57

ZF2正在大力开发中,不能保证它现在的工作方式,它将是ZF2达到稳定状态时的工作方式.

但是,Zend\Mvc的新视图层最近已合并,因此您现在应该可以执行此操作(使用当前主控):

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

    $this->layout('layout/different');
}
Run Code Online (Sandbox Code Playgroud)


TAL*_*BOY 8

我发现在动作中设置模板的最佳方法是这样的

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

    return $viewModel;
}
Run Code Online (Sandbox Code Playgroud)

在你module.config.php确保你已经设置你的合适template_map路径.

    'view_manager' => array(
    'template_map' => array(
        'layout/custom' => __DIR__ . '/../view/layout/custom.phtml'
    ),
),
Run Code Online (Sandbox Code Playgroud)

  • 这将设置视图,但不是布局,正如作者所要求的那样. (6认同)

小智 7

public function someAction() {
    $layout = $this->layout();
    $layout->setTemplate('layout/custom');
    $viewModel = new ViewModel();
    return $viewModel;
}
Run Code Online (Sandbox Code Playgroud)