代码之家  ›  专栏  ›  技术社区  ›  Matthieu Napoli

在zend框架的控制器中使用视图帮助程序

  •  18
  • Matthieu Napoli  · 技术社区  · 15 年前

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

    我需要找个人 视图助手 格式化我的数据,但是 在我的控制器中 .

    有可能吗?

    或者我是 doing it wrong (也许我应该有一个视图,但是如何使用json呢?)

    5 回复  |  直到 7 年前
        1
  •  43
  •   Community CDub    8 年前

    您可以通过以下方式从控制器访问任何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?

    但是,你可能是对的,你做错了( 有趣的图片顺便说一句 )但我真的不能从你的问题中分辨出来。请详细说明为什么需要调用视图助手以及它应该格式化的内容。

        2
  •  4
  •   coolguy    12 年前
    Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('view');
    

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

    以及在动作助手等视图上设置的所有值…在控制器被踢进来之前?都随风而逝了!

    所以在假设获得视图资源之前进行测试。它实际上是您所期望的视图资源,而且您的所有vars都仍然存在。

    你可能和我一样惊讶!

        3
  •  3
  •   Danilo    12 年前

    您可以创建助手的实例。这将在控制器,模型和任何你需要帮助的地方工作。

    如。

    // create Instance   
    $serverUrl_helper = new Zend_View_Helper_ServerUrl();
    
    // get the ServerUrl
    $serverUrl = $serverUrl_helper->serverUrl();
    
        4
  •  1
  •   David Weinraub    10 年前

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

        5
  •  0
  •   takeshin    15 年前

    只需使用动作辅助对象,许多视图辅助对象也可用作动作辅助对象。

    或直接使用 Zend_Date sprintf .