1

This is a ZF2 question.

I'm trying to change my template, depending on a variable setted on my controller (since is there that im going to decide which template use). In my module onBooststrap i have:

$this->eventManager->attach('dispatch', function($e)
    {
        if (0 === strpos($e->getRouteMatch()->getParam('controller'), __NAMESPACE__, 0))
        {
            $e->getViewModel()->setTemplate('layout');
        }

    }, -100);

and in my controller:

class IndexController extends AbstractActionController
{
    public function indexAction ()
    {
        $view = new \Zend\View\Model\ViewModel();
        $view->setVariable("layout", "layout");
        return $view;
    }
}

but, how do i get access to that view variable "layout", so i can change it in the dispatch event on setTemplate?

4

1 に答える 1

2

onDispatchメソッドとMvcEventクラスを見ると、メソッドがあるように見えますがgetResult()、これにはコントローラー アクションの結果が含まれている可能性があります。

それ以外の場合は、レイアウト コントローラー プラグインを見ましたか? このプラグインを使用すると、テンプレートを変更できます。

$this->layout('new layout');

もちろん、これはコントローラー内にある必要があり、おそらくテンプレート マップにテンプレートを追加する必要があります。

于 2012-09-25T18:01:40.637 に答える