Php 在ZF中将变量从布局传递到视图
我试图将一个变量从主布局传递到视图,但我没有运气 layout.phtmlPhp 在ZF中将变量从布局传递到视图,php,zend-framework,Php,Zend Framework,我试图将一个变量从主布局传递到视图,但我没有运气 layout.phtml $this->hadMessages=true; myview.phtml 变量转储($this->hadMessages); var\u dump总是返回NULL。从我所读到的,布局也是一个视图,所以它应该在相同的上下文中,对吗 我使用的是Zend Framework 1.11。布局是在视图之后渲染的,所以这就是为什么不起作用。根据您试图做什么,您可能能够借助控制器插件实现所需的效果。无法将变量从布局传递到视图
$this->hadMessages=true;
myview.phtml
变量转储($this->hadMessages);
var\u dump
总是返回NULL
。从我所读到的,布局也是一个视图,所以它应该在相同的上下文中,对吗
我使用的是Zend Framework 1.11。布局是在视图之后渲染的,所以这就是为什么不起作用。根据您试图做什么,您可能能够借助控制器插件实现所需的效果。无法将变量从布局传递到视图,因为根据MVC模式,您不应该有这样的任务。布局是否包含一些消息应该根据控制器或引导级别而不是布局本身来决定。
这意味着在控制器中,您应该进行所有必要的赋值,如
$this->view->layout\u messages\u show=true
,并在布局和视图中获取变量值,如echo($this->layout\u messages\u show?“messages show?”),“messages hidden”)
whaaat?在风景之后?这是某种逆向逻辑巫毒的东西吗?这完全没有意义(至少不是第一眼看到的),但好吧,就这样吧。我正在布局中做一些决策(无法将其移动到控制器),我想知道在视图中布局是否显示任何消息。这在任何情况下都是可能的(也许一个分部会有所帮助——分部何时呈现?)。谢谢在视图之后渲染布局有许多优点,例如,视图可以向标题添加
标记,或操作headTitle()
或headMeta()
帮助程序。将逻辑移动到控制器插件(而不是控制器),对于您的用例来说可能仍然是正确的。如何将消息分配给视图?按会话(我正在构建一个更好的FlashMessenger
helper版本)。因此,我在布局中调用$flashmessenger->hasMessages()
,并希望将其存储在一个变量中以供以后在视图中使用。您不能在视图中执行hasMessages()
检查吗?我可以,但我必须在每个视图中执行此操作,而且我真的不想重复那么多次代码。