Zend framework2 setTerminal删除内容而不是布局
嗨,我有一个zf2应用程序。 在我的模块中,我将侦听器附加到Zend framework2 setTerminal删除内容而不是布局,zend-framework2,Zend Framework2,嗨,我有一个zf2应用程序。 在我的模块中,我将侦听器附加到MvcEvent::EVENT\u DISPATCH事件。 在这个监听器中,我检查用户是否经过身份验证等。 如果用户经过身份验证,我将更改布局 现在,如果在我的操作中调用$viewModel->setTerminal(true),则不会显示任何内容,只显示布局,但我需要相反的方式 这个答案多少解释了我的想法,但我并不清楚。 另外,提供的解决方案在我的情况下不起作用,因为我必须将这两种方法添加到我的所有控制器中 有人有办法吗 谢谢在布局
MvcEvent::EVENT\u DISPATCH
事件。
在这个监听器中,我检查用户是否经过身份验证等。
如果用户经过身份验证,我将更改布局
现在,如果在我的操作中调用$viewModel->setTerminal(true)
,则不会显示任何内容,只显示布局,但我需要相反的方式
这个答案多少解释了我的想法,但我并不清楚。
另外,提供的解决方案在我的情况下不起作用,因为我必须将这两种方法添加到我的所有控制器中
有人有办法吗
谢谢在布局侦听器中,在设置布局之前,您需要应用一些条件逻辑来确定控制器返回的视图模型是否为终端 这可以通过从侦听器中的
MvcEvent
获取结果,并检查它是否是一个不terminate()的ViewModel
实例来实现
注意:您需要确保布局侦听器具有足够低的优先级(>=-10似乎足够),以便在测试条件之前,控制器操作已实际返回视图模型
public function yourLayoutListenerCallback(MvcEvent $e)
{
// get the dispatched result from the event
$result = $e->getResult();
// check it's a view model that doesn't terminate
if (!$result instanceof \Zend\View\Model\ViewModel || $result->terminate()) {
// do nothing
return;
}
// your existing layout logic ....
}