在Zend Framework中的控制器中使用视图助手

时间:2010-03-08 12:59:26

标签: php zend-framework view-helpers

我有一个用AJAX调用的控制器(发送JSON数据),所以我不使用视图。

我需要使用personnal 查看助手来格式化我的数据,但我的控制器中

这可能吗?

或许我是doing it wrong(也许我应该有一个观点,但是如何使用JSON)?

5 个答案:

答案 0 :(得分:43)

您可以通过

从Controller访问任何ViewHelper
$this->view->helpername(/*params*/);
// or
$helper = $this->view->getHelper('helpername');
// or
$broker = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
$broker->getView()->helpername(/*params*/);

请参阅Zend: How to use a custom function from a view helper in the controller?

但是,你做错了可能是正确的(有趣的照片btw ),但我无法从你的问题中说出来。请详细说明为什么需要调用视图助手以及它应该格式化的内容。

答案 1 :(得分:4)

Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('view');

确保返回的视图是您想要的视图。因为在线下,视图可能会被覆盖,并且在控制器上你有一个新的视图。

在操作控制器启动之前,您在动作助手等视图上设置的所有值?一切都随风而去!

在假设您获得视图资源之前进行测试。它实际上是您期望的相同视图资源,并且您的所有变量仍然存在。

你可能会对我感到惊讶!

答案 2 :(得分:3)

您可以创建Helper的实例..这将在控制器,模型以及您需要帮助程序的任何位置工作。

例如

// create Instance   
$serverUrl_helper = new Zend_View_Helper_ServerUrl();

// get the ServerUrl
$serverUrl = $serverUrl_helper->serverUrl();

答案 3 :(得分:1)

另一种方法是使用ContextSwitch or AjaxContext action-helpers。这允许您使用视图脚本,然后您可以从中以标准方式调用视图助手。

答案 4 :(得分:0)

只需使用动作帮助程序,许多视图帮助程序也可用作动作帮助程序。

或直接使用Zend_Datesprintf