yii2 更新验证规则

ant*_*ton 2 php validation model yii2

我有一个模型和验证规则:

class User extends ActiveRecord implements IdentityInterface
{
 ...
public function rules()
{
    return [
        [['username', 'password', 'email'], 'required', 'on' => 'insert'],
        [['password', 'email'], 'required', 'on' => 'update'],
    ]
}
Run Code Online (Sandbox Code Playgroud)

实际上代码不产生验证器。当我删除“on”部分时,一切顺利。

挖掘官方文档并通过 Web 搜索并没有帮助我了解问题所在,以及为什么我不能为不同的操作设置自定义的必填字段。

sca*_*dge 5

Yii2 ActiveReccoed 不会自动设置场景。如果你需要一个特定的场景,你必须创建它并分配

例如更新...

public function scenarios()
{
    $scenarios = parent::scenarios();
    $scenarios['update'] = ['password', 'email'];//Scenario Values Only Accepted
    return $scenarios;
}
Run Code Online (Sandbox Code Playgroud)

您也可以在 actionUpdate 中设置场景

public function actionUpdate($id)
{
   $model = $this->findModel($id);
   $model->scenario = 'update';
  ........
}
Run Code Online (Sandbox Code Playgroud)