Yii 如何在控制器中更改url查询

Yii 如何在控制器中更改url查询,yii,yii-components,Yii,Yii Components,我想更改从控制器请求的页面地址。 例如:提示站点/编辑返回站点/编辑/12时 其中12-是一个模型数。 当然我可以使用重定向,但可以做到的一点是不使用重定向。 我的片段: public function actionEdit($id = null){ if(!$id){ $model = Portfolio::model()->createEmpty(); $this->redirect('site/edit'.$model->id);

我想更改从控制器请求的页面地址。 例如:提示站点/编辑返回站点/编辑/12时 其中12-是一个模型数。 当然我可以使用重定向,但可以做到的一点是不使用重定向。 我的片段:

    public function actionEdit($id = null){
         if(!$id){
    $model = Portfolio::model()->createEmpty();
    $this->redirect('site/edit'.$model->id);// I think that redirect is bad
    Yii::app()->end();
      }
   // ... etc logic
     }


您应该使用数组执行此操作:

$this->redirect(array('site/edit','id'=>$model->id));

如果要在url中隐藏“id”,请在配置文件中添加url规则。

谢谢。但是重定向-是重新初始化应用程序。我认为这不需要使用重定向就可以完成。编辑是因为您的评论。更简单的是,actionEdit$id=12,但根据问题,12是随机数。您是如何生成随机数12的?每次刷新/调用编辑操作时?如何在没有id的情况下达到编辑操作!!!?如果不在模型上创建$id,则访问不带标识符的方法是逻辑,并使用它创建$id。在大多数情况下,$id需要在数据库中查找记录。
public function actionEdit($id = 0){
    if($id == 0){
       $id = 12;
    }
}
$this->redirect(array('site/edit','id'=>$model->id));