Zend Framework在调用完一个Action后,会自动去寻找并且显示相应的视图文件。因此在第一个Hello World的例子中,为了直接在控制器的Action中输出“Hello World”,在echo语句后用了一个die(),显得很不美观:
class IndexController extends Zend_Controller_Action{
public function indexAction(){
echo 'Hello World!';
die();
}
}
?>
显然,有些时候并不需要Zend Framework这样“自作主张”,因此需要取消它自动加载视图的功能。
Zend_Controller_Front类有一个setParam方法可以用来设置前端控制器的一些参数。要取消Zend Framework的自动加载视图的功能,可以在整个应用程序的入口文件处设置“noViewRenderer”参数的值为“true”:
$frontController=Zend_Controller_Front::getInstance();
// ....
$frontController->setParam('noViewRenderer',true);
这样,所有的Action方法在执行完后都不会自己去加载视图。
如果只是要在某一个控制器内取消这个特性,可以在控制器的init方法或者preDispatch方法内调用
$this->_helper->viewRenderer->setNoRender();
例如:
public function preDispatch(){
$this->_helper->viewRenderer->setNoRender();
}
再进一步,如果只是想在某个Action方法中取消自动加载视图,把上面的setNoRender()放在相应的函数里面就行了。
class IndexController extends Zend_Controller_Action{
public function indexAction(){
echo 'Hello World!';
die();
}
}
?>
显然,有些时候并不需要Zend Framework这样“自作主张”,因此需要取消它自动加载视图的功能。
Zend_Controller_Front类有一个setParam方法可以用来设置前端控制器的一些参数。要取消Zend Framework的自动加载视图的功能,可以在整个应用程序的入口文件处设置“noViewRenderer”参数的值为“true”:
$frontController=Zend_Controller_Front::getInstance();
// ....
$frontController->setParam('noViewRenderer',true);
这样,所有的Action方法在执行完后都不会自己去加载视图。
如果只是要在某一个控制器内取消这个特性,可以在控制器的init方法或者preDispatch方法内调用
$this->_helper->viewRenderer->setNoRender();
例如:
public function preDispatch(){
$this->_helper->viewRenderer->setNoRender();
}
再进一步,如果只是想在某个Action方法中取消自动加载视图,把上面的setNoRender()放在相应的函数里面就行了。
Comments
Post a Comment