在我的项目中,我有许多动态元素,每个页面都是一致的.我已将这些放在layout.phtml中
我的问题是:如何从控制器向我的布局发送变量?
如果我想从我的控制器发送东西,我可以使用:
$this->view->whatever = "foo";
并在视图中接收它
echo $this->whatever;
我无法弄清楚如何对我的布局做同样的事情.也许有更好的方法解决这个问题?
布局是一个视图,因此分配变量的方法是相同的.在您的示例中,如果您要回显$ this->布局中的任何内容,您应该看到相同的输出.
一个常见问题是如何将在每个页面上使用的变量分配给布局,因为您不希望在每个控制器操作中复制代码.一个解决方案是创建一个插件,在渲染布局之前分配这些数据.例如:
getView(); $view->whatever = 'foo'; } }
然后使用前端控制器注册此插件,例如
Zend_Controller_Front::getInstance()->registerPlugin(new My_Layout_Plugin());
不使用帮助器或插件做:
Zend_Layout::getMvcInstance()->assign('whatever', 'foo');
在此之后,您可以在布局中使用以下内容:
layout()->whatever; ?>
这将打印"foo".
我有一个基本控制器,所有其他控制器都扩展.
所以我有一个控制器......
view->foo = "bar"; } }
并在布局和/或视图中
= $this->foo ?>