全部博文(921)
分类:
2011-01-09 17:44:44
最近一直在写存储过程,zf都忘的差不多了,据说这个周末公司要搞zf考试,所以顺便复习哈,我这里只做简单的笔记,在以后的实际开发中遇到一些新的关于跳转问题,我会继续更新进来;
1.$this->_forward($action,$controller=null,$module=null,array$params=null)
参数要至少写前两个,不然就会报错;
此跳转不会更改浏览器地址;
2.$this->_redirect($url,$options)
$url通常就是'controller/action',至于后面的$options我还没用过;
此跳转会改变浏览器地址;
3.$this->render('test')或$this->render('4-2.php')
此跳转会先进到test.phtml页面,再到该控制器下的testAction();
第二种情况就是跳转到对应的页面;
下面是我收录的网上的一些说法:
$this->_redirect(‘/controller/action’) 会向浏览器发出一个 “Location: /controller/action” 这样的 header ,致使浏览器再产生一个 URL 为 /controller/action 的 web 请求
$this->_forward() 却不是这样,它不依赖于浏览器,而是在执行完 actionA 后在继续执行一个 actionB,这完全是在服务端完成,中间没有跟浏览器打交道过程。
对用户来说,$this->_forward() 时他会在地址栏上看到一个/controller/actionA,虽然还做了个 /controller/actionB 的动作,这是一个请求,两个动作。而$this->_redirect() 则是两个个请求,两个动作。
显然两种不同的机制会造成两种不同的结果,$this->_redirect() 会将两个action 的结果分别显示在两个页面上,而 $this->_forward() 则会在一个页面同时输出两个动作的结果。