我有一个模型和验证规则:
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';
........
}
关于php - yii2 更新验证规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35609902/