Zend framework 捕获视图渲染结果(非直接echo)
<?php
class AccountController extends Zend_Controller_Action{
/**
* 视图渲染前置方法
*
*/
public function preDispatch(){
//禁止所有的方法自动渲染视图
$this->_helper->viewRenderer->setNoRender();
}
public function loginAction(){
//禁止本方法自动渲染视图
//$this->_helper->viewRenderer->setNoRender();
$layout = new Zend_Layout();
$layout -> setLayoutPath(APPLICATION_PATH."/views/layouts");
$layout->content=$this->view->render(/'account/login.phtml/');
$layout->setLayout(/'login/');
echo $layout->render();
}
}
关键在这里:
$this->view->render(/’path/to/test.phtml/’);
$this->view是 Zend_View的一个对象变量,
等价于:
$view = new Zend_View();
echo $view->render(/'test.php/');
如果没有禁用视图自动渲染,那么会多渲染一个视图,而且如果模版文件不存在,那么会报错,有时候我们要动态输出ajax或者其他内容,并不希望自动 渲染视图,那么就需要关闭视图渲染助手的自动渲染,官方推荐的方法是
$this->_helper->viewRenderer->setNoRender();
意思是告诉视图渲染者(助手),这个方法就不必要自动渲染了。
禁用自动渲染视图之后,可以通过echo $this->render();或者echo $this->_helper->viewRenderer->render();来输出视图渲染。
推荐用echo $this->render();
学习zend framework很辛苦,博大精深,希望大家不要胆怯,勇敢去探索未知的世界。总有一天可以拿下它