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

时间:2015-01-15 09:24:40

标签: php yii

我有一个表,我分为两个部分,每个我在控制器下提到两个动作,我想为这两个动作分开验证规则,所以我不想使用通用模型规则。

有什么方法可以让我在行动中写下规则。

我有用户控制器,我已经定义了两个名为frontuserbackenduser的操作。 我在控制器中的动作

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

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

由于

2 个答案:

答案 0 :(得分: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 :(得分:1)

验证规则不在控制器中的模型中。你想要做的是使用场景。 当您在模型中放置规则时,您可以执行以下操作:

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

使用'' =>' ...'您可以告诉您必须应用规则的情况。 在创建新模型时,在控制器中,您应该将场景作为参数:

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