Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5119288
  • 博文数量: 921
  • 博客积分: 16037
  • 博客等级: 上将
  • 技术积分: 8469
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-05 02:08
文章分类

全部博文(921)

文章存档

2020年(1)

2019年(3)

2018年(3)

2017年(6)

2016年(47)

2015年(72)

2014年(25)

2013年(72)

2012年(125)

2011年(182)

2010年(42)

2009年(14)

2008年(85)

2007年(89)

2006年(155)

分类:

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()  则会在一个页面同时输出两个动作的结果。

阅读(3595) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~