关于Yii中的url的跳转,有两个方法,第一个是Redirect,第二个是Forward Yii的Rediret使用方法 $this->redirect(array('index')); 对应的是当前controller的index action http://www./testwebap/index.php?r=user/index $this->redirect(array('view','id'=>$model->id)); 对应的是当前controller的view action并传递id参数值为3 $this->redirect(array('/site/contact','id'=>12)); $this->redirect(array('site/contact','id'=>12)); http://www./testwebap/index.php?r=site/contact&id=12 $this->redirect(array('site/contact','id'=>'idv','name'=>'namev')); http://www./testwebap/index.php?r=site/contact&id=idv&name=namev $this->redirect(array('site/contact','v1','v2','v3')); http://www./testwebap/index.php?r=site/contact&0=v1&1=v2&2=v3 $this->redirect(array('site/contact','v1','v2','v3','#'=>'ttt')); 带anchor的 $this->redirect(array('user/create','v1','v2','v3','#'=>'ttt')); http://www./testwebap/index.php?r=user/create&0=v1&1=v2&2=v3#ttt $this->redirect(array('testmod/default/index','v1','v2','v3','#'=>'ttt')); http://www./testwebap/index.php?r=testmod/default/index&0=v1&1=v2&2=v3#ttt $this->redirect('http://www.baidu.com'); 函数的原型是 public function redirect($url,$terminate=true,$statusCode=302) { if(strpos($url,'/')===0) $url=$this->getHostInfo().$url; header('Location: '.$url, true, $statusCode); if($terminate) Yii::app()->end(); } YII的forward$this->forward('/testmod/default/index'); 函数的原型是: public function forward($route,$exit=true) { if(strpos($route,'/')===false) $this->run($route); else { if($route[0]!=='/' && ($module=$this->getModule())!==null) $route=$module->getId().'/'.$route; Yii::app()->runController($route); } if($exit) Yii::app()->end(); } forward和redirect的区别显而易见1,浏览器url地址 2,是否支持绝对地址 3,是否传递参数 |
|