19

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

我需要使用个人视图助手来格式化我的数据,但在我的控制器中。

那可能吗 ?

或者也许我做错了(也许我应该有一个观点,但是 JSON 怎么样)?

4

5 回答 5

45

您可以通过以下方式从控制器访问任何 ViewHelper

$this->view->helpername(/*params*/);
// or
$helper = $this->view->getHelper('helpername');
// or
$broker = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
$broker->getView()->helpername(/*params*/);

请参阅Zend:如何从控制器中的视图助手中使用自定义函数?

但是,您可能是对的,您做错了(有趣的图片顺便说一句),但我无法从您的问题中真正看出。请完善它,说明为什么需要调用视图助手以及它应该格式化的内容。

于 2010-03-08T13:05:42.233 回答
5
Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('view');

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

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

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

你可能会像我一样感到惊讶!

于 2012-02-13T11:21:36.303 回答
3

您可以创建一个 Helper 的实例 .. 这将适用于控制器、模型以及您需要 Helper 的任何地方。

例如。

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

// get the ServerUrl
$serverUrl = $serverUrl_helper->serverUrl();
于 2012-09-18T12:22:43.293 回答
1

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

于 2011-02-18T16:36:43.893 回答
0

只需使用动作助手,许多视图助手也可用作动作助手。

或直接使用Zend_Dateor sprintf

于 2010-03-08T17:26:00.210 回答