Php 如何在yii 1.10中的控制器中定义规则

Php 如何在yii 1.10中的控制器中定义规则,php,yii,Php,Yii,我有一个表,我把它分为两个部分,每个部分我都提到了控制器下的两个操作,我想为这两个操作分离验证规则,所以我不想使用公共模型规则 有没有什么方法可以让我写出实际的规则 我有一个用户控制器,我定义了两个动作,分别是frontuser和backenduser。 我在控制器中的操作 public function actionfrontuserCreate() { // want to write rule here } public function actionbackenduserCr

我有一个表,我把它分为两个部分,每个部分我都提到了控制器下的两个操作,我想为这两个操作分离验证规则,所以我不想使用公共模型规则

有没有什么方法可以让我写出实际的规则

我有一个用户控制器,我定义了两个动作,分别是
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_

然后在控制器中,您将指定将使用哪个场景

$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));
}