2015-01-15 13 views
0

我有一個表格,我分爲兩部分,每部分我都提到了控制器下的兩個動作,我想分開兩個動作的驗證規則,所以我不想要使用通用的模型規則。如何在yii中定義控制器中的規則1.10

有沒有什麼辦法可以寫出規則的行動。

我有用戶控制器,我已經定義了兩個動作,分別叫做frontuserbackenduser。 我的控制器操作

public function actionfrontuserCreate() 
{ 
    // want to write rule here 
} 

public function actionbackenduserCreate() 
{ 
    // want to write rule here 
} 

感謝

回答

1

嗨,我希望我可以幫助你:

規則應該在即使模型與不同類型的一個或多個控制器之間共享的模型聲明的行動...

但你不希望規則在所有這些行動中執行,所以你指定極好的行動可以採用該規則使用scenarios,我給你舉個例子:

array('password_repeat', 'required', 'on'=>'register'), 

上面的代碼不僅使得對方案所需pasword_repeat注​​冊

然後在你的控制器,你會指定至極的場景將被用來...

$modelA = User::model()->findByPk(1); // $model->scenario = 'update' 
$modelB = new User();     // $model->scenario = 'insert' 
$modelB->scenario = 'light';   // custom scenario 
if ($modelB->validate()) { ... 

我希望這會解決您的問題,爲獎金,我建議檢查默認yii情況下插入,更新,刪除....

1

驗證規則進入模型不在控制器。你想要做的是使用場景。 當你把一個規則,你可以做類似的模式:

array('username', 'required', 'on'=>'frontUserCreate'), 

通過使用「上」 =>「...」的一部分,你可以在必須應用什麼情況下該規則告訴。 在您的控制器中創建新模型時,應該將場景作爲參數:

public function actionfrontuserCreate() 
{ 
    $model = new User('frontUserCreate'); 
    if (isset($_POST['User']) { 
     .... 
    } 
    $this->render('viewname', array('model'=>$model)); 
} 
相關問題