QuickWeb VPS代购70元起,千兆共享带宽,速度最高500Mb/s.     BurstNet VPS代购35元/月,没有更低价.     域名注册要出国,安全放心有保障,.com .net域名55元/年.

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很辛苦,博大精深,希望大家不要胆怯,勇敢去探索未知的世界。总有一天可以拿下它

相关文章

发表评论