我有一个用AJAX调用的控制器(发送JSON数据),所以我不使用视图。
我需要使用personnal 查看助手来格式化我的数据,但我的控制器中 。
这可能吗?
或许我是doing it wrong(也许我应该有一个观点,但是如何使用JSON)?
答案 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_Date
或sprintf
。