我有一个使用 AJAX 调用的控制器(发送 JSON 数据),所以我不使用视图。
我需要使用个人视图助手来格式化我的数据,但在我的控制器中。
那可能吗 ?
或者也许我做错了(也许我应该有一个观点,但是 JSON 怎么样)?
我有一个使用 AJAX 调用的控制器(发送 JSON 数据),所以我不使用视图。
我需要使用个人视图助手来格式化我的数据,但在我的控制器中。
那可能吗 ?
或者也许我做错了(也许我应该有一个观点,但是 JSON 怎么样)?
您可以通过以下方式从控制器访问任何 ViewHelper
$this->view->helpername(/*params*/);
// or
$helper = $this->view->getHelper('helpername');
// or
$broker = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
$broker->getView()->helpername(/*params*/);
但是,您可能是对的,您做错了(有趣的图片顺便说一句),但我无法从您的问题中真正看出。请完善它,说明为什么需要调用视图助手以及它应该格式化的内容。
Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('view');
只要确保返回的视图是您想要的视图。因为在这条线上,视图可能会被覆盖,并且在控制器上你有一个新的视图。
在控制器启动之前,您在动作助手等的视图上设置的所有这些值...... 都随风而去!
因此,在假设您获得视图资源之前进行测试。它确实是您期望的相同视图资源,并且您的所有变量仍然存在。
你可能会像我一样感到惊讶!
您可以创建一个 Helper 的实例 .. 这将适用于控制器、模型以及您需要 Helper 的任何地方。
例如。
// create Instance
$serverUrl_helper = new Zend_View_Helper_ServerUrl();
// get the ServerUrl
$serverUrl = $serverUrl_helper->serverUrl();
另一种方法是使用ContextSwitch 或 AjaxContext action-helpers。这允许您使用视图脚本,然后您可以从中以标准方式调用视图助手。
只需使用动作助手,许多视图助手也可用作动作助手。
或直接使用Zend_Date
or sprintf
。