我有一個ProjectController和一個ClientController。重定向(返回)Yii中的另一個控制器
我想從項目_form.php中創建一個選項,在客戶端下拉菜單中有一個鏈接,該鏈接重定向到ClientController :: actionCreate,但傳遞給它一些變量以告知它是否來自ProjectController :: actionUpdate或:: actionCreate。
我是ClientController :: actionCreate做它的事情,然後,如果用戶通過ProjectController :: actionCreate OR :: actionUpdate到達那裏,將它們重定向回該頁面並在項目模型中設置client_id以匹配任何剛創建。
如果有人只是通過常規菜單添加一個新的客戶端,他們可以使用默認的重定向(我認爲它可以查看)。
在我_form.php這個我使用下面的代碼鏈接到客戶端:: actionCreate
<?php echo " ".Chtml::link('+New client',array('client/create',array('redir'=>'project/'.Yii::app()->controller->action->id)));?>
用某種方式告訴它需要送點東西回項目/更新客戶端控制目標或項目/創建。
我想ClientController使用這樣的代碼:: actionCreate
public function actionCreate()
{
$model=new Client;
...
....
if(isset($_POST['Client']))
{
$model->attributes=$_POST['Client'];
if($model->save())
{
if(!empty($model->redir)){
$this->redirect(array($model->redir,'id'=>$model->id));
} else {
$this->redirect(array('view','id'=>$model->id));
}
}
}
...
....
}
我很新的Yii的,不知道什麼是最好的方法來完成,這將是。
非常感謝。我想我已經明白了。只是爲了確定,這是否有意義? 添加兩個新變量對「創建」 在actionCreate分配$ _GET變量模型我的客戶模型(公共$地位,$ REDIR) 馬克那些2中的「安全」是安全的。 發佈後,檢查它們的值並根據我設置的任何邏輯將它們重定向回正確的動作/控制器/ ID。 我想了解,如果這是正確的方式使用Yii/MVC與您的建議上面。 – McB
很高興幫助。對於你的問題,是的,你可以使用它。在那種情況下,我不認爲你需要宣佈它是安全的。只是不要把它放在「需要」的規則中。如果不需要,它不會打擾你。 –