我有一个表,我为每个表分为两个部分,我在控制器下提到了两个操作,我想为这两个操作分开验证规则,所以我不想使用通用模型规则。
有什么方法可以让我在行动中编写规则。
我在那里有用户控制器,我定义了两个操作,称为frontuser
和backenduser
。我在控制器中的操作
public function actionfrontuserCreate()
{
// want to write rule here
}
public function actionbackenduserCreate()
{
// want to write rule here
}
谢谢
嗨,
我希望我能帮助你:
即使在具有不同类型操作的一个或多个控制器之间共享模型,也应在模型中声明规则......
但是您不希望在所有这些操作中执行规则,因此您指定操作可以使用场景采用该规则,我给您留了一个示例:
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 场景插入、更新、删除....
验证规则位于模型中,而不是控制器中。您要做的是使用方案。在模型中放置规则时,可以执行以下操作:
array('username', 'required', 'on'=>'frontUserCreate'),
通过使用"on"=>"...'部分您可以判断在什么情况下必须应用规则。在控制器中创建新模型时,应将方案作为参数:
public function actionfrontuserCreate()
{
$model = new User('frontUserCreate');
if (isset($_POST['User']) {
....
}
$this->render('viewname', array('model'=>$model));
}