代码之家  ›  专栏  ›  技术社区  ›  Slavic

如何捕获Zend视图输出而不是实际输出它

  •  6
  • Slavic  · 技术社区  · 14 年前

    问题:有时在我们的zend控制器中,我们不希望脚本直接输出,而是希望脚本的内容。例如:当我们需要一个视图脚本的结果html输出包含在另一个结构(如JSON或XML)中,以便在客户端进行处理时。

    我在stack overflow中发现了这个结果,但不是很快,因为它位于不同的上下文中。我已经挣扎了两天了。结果很简单:

        // in our controllers' action method
        $this->_helper->layout()->setLayout('empty');    // disable layout
        $this->_helper->viewRenderer->setNoRender(true); // make sure the script is not being rendered
    
        // any of your code here
        $html = $this->view->render('projects/climate.phtml');  // return the view script content as a string
        $json = array('html'=>$html, 'initData'=>'my other needed data');
        echo json_encode($json);
    

    我希望这是明确的,将是有用的人。

    1 回复  |  直到 13 年前
        1
  •  9
  •   Julien    14 年前

    尝试使用

    public myAction () {
        $this->_helper->json(array(
            'html'    => $this->view->render('projects/climate.phtml'),
            'initData'=> 'my other needed data',
        ));
    }
    

    Json操作助手通常

    • 禁用 viewRenderer
    • json_encode
    推荐文章