在 Zend 中如何实现复合视图?

Posted

技术标签:

【中文标题】在 Zend 中如何实现复合视图?【英文标题】:How do you implement composite views in Zend? 【发布时间】:2011-05-30 21:53:22 【问题描述】:

我想知道 - 如何在 Zend 中实现复合视图。也就是说,我可以在一页上有多个视图和控制器吗?我知道您可以使用布局并将一个控制器的内容注入到布局中,但是无论如何可以将多个控制器注入到特定的布局中?

提前致谢。

【问题讨论】:

【参考方案1】:

我不认为你可以在一个布局中使用多个控制器,有更多经验的人可能会纠正我。

我看不出你有任何理由想要这样做!

您可以使用$this->partial() 视图助手添加部分视图,也可以添加您自己的视图助手以将内容添加到您的布局中。如果需要,您没有理由不能直接在视图中访问模型,只要它们只是为了显示目的而读取数据。我以这种方式实现了侧边栏、登录表单和导航菜单,没有任何问题。

我希望这会有所帮助。

亲切的问候

加里

【讨论】:

嗯……有this helper,但我们不敢说它的名字。不过,Partials 和视图助手是可行的方法。 view action helper 很糟糕,没错,还有 action stack 的思维方式,但是一些***者拒绝回答试图解释为什么 actionStack 没有那么糟糕的答案。 ActionStack 使 dispatchLoop 和插件操作更容易理解。恕我直言,我认为 ActionStack 很好,因为很容易将其转换为 ESI 门或 ajax 模式组合,但似乎社区现在正在烧毁旧工具。 是的,我同意,我可能会坚持使用自定义视图助手。谢谢【参考方案2】:

TestController.php

public function testAction()

  $this-view->test = 'hi';

test.phtml

<?php
  echo $this->test;
?>

layout.phtml

 $this->layout()->test = $this->action('testAction','TestController')
 echo $this->layout()->test;

更多信息请查看 Apress.Pro.Zend.Framework.Techniques.Build.a.Full.CMS.Project

【讨论】:

以上是关于在 Zend 中如何实现复合视图?的主要内容,如果未能解决你的问题,请参考以下文章

Zend Framework中如何实现MySQL的读写分离 - PHP框架开发

如何在 Zend/MVC 的视图文件中包含 PHP 文件?

如何在 Zend Framework 2 中为局部使用共享视图脚本路径?

Zend Framework 1 - 如何在功能集成测试中重置视图数据,而不是会话数据?

如何在控制器或视图之外使用 Zend Framework 部分视图助手?

如何从数组中获取值并在zend框架工作中分配给视图