Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php yii2更新时的验证规则_Php_Validation_Model_Yii2 - Fatal编程技术网

Php yii2更新时的验证规则

Php yii2更新时的验证规则,php,validation,model,yii2,Php,Validation,Model,Yii2,我有一个模型和验证规则: class User extends ActiveRecord implements IdentityInterface { ... public function rules() { return [ [['username', 'password', 'email'], 'required', 'on' => 'insert'], [['password', 'email'], 'required', 'on' =&g

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

class User extends ActiveRecord implements IdentityInterface
{
 ...
public function rules()
{
    return [
        [['username', 'password', 'email'], 'required', 'on' => 'insert'],
        [['password', 'email'], 'required', 'on' => 'update'],
    ]
}
实际上,代码不生成验证器。当我删除“打开”部分时,一切都很顺利


翻阅官方文档并通过网络搜索并不能帮助我理解问题所在,为什么我不能为不同的操作设置自定义必填字段集。

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

例如,为了更新

public function scenarios()
{
    $scenarios = parent::scenarios();
    $scenarios['update'] = ['password', 'email'];//Scenario Values Only Accepted
    return $scenarios;
}
您还可以在actionUpdate中设置场景

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

谢谢,它工作正常。遗憾的是,文档对我来说有点不直观。