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