Zend Framework中forward和redirect的区别

找了一圈,看到大家讲的都不好玩,不直白。我来引用Stackoverflow上某人做的一 个比喻:

你是苦逼的开发,桌上的电话响了,接听后,那人说要找一位销售讲电话,你说:销售的直线是020-12345678,然后就给挂掉了。这就是redirect。另一种情况,你说,你等等啊我给你转一下,然后将电话转给一位销售部门。这就是forward。

$this->_redirect($url);
$this->_redirect('/Read/novel/id/3');
$this->_redirect('http://www.oschina.net');
//这个redirect转了哪些参数,别人是不是一目了然?

要是你用forward,可以在Module、Controller和Action之间跳,就是不能跳到别人的网站。

$this->_forward('action','controller','module',$param);
//转到www.ursite.com/Controller/action/$param

$this->_forward('novel','Read','default',array('id'=> $id,'mode'=> $mode));
//转到www.ursite.com/Read/novel/id/3/mode/fullverion,这个3和fullversion是变量

$this->_forward('poem','null','null',array('id'=> $id,'mode'=> $mode));
//这个forward,跳到别的网站去,如果在同一个Controller下另一个novel动作,可以节省流量,节省计算资源

另外,forward之后,显示在地址栏里的地址不变。

猜你喜欢

转载自my.oschina.net/u/589241/blog/1807986