Yii2: scenarios() 模型方法
Yii2: scenarios() model method
需要2个功能:注册时设置密码和忘记密码时更改密码。用户注册时,密码长度必须至少为4个字符;当更改通过时 - 至少 5 个字符。
View 是注册和更改通行证的通用视图。显然,还存在 2 个操作,其中使用了任一场景 'signup',或 'change'。
模型中的代码片段:
public function rules() {
return [
['password', 'string', 'min' => 4, 'on' => 'signup'],
['password', 'string', 'min' => 5, 'on' => 'change'],
];
}
但我想通过 scenarios() 来完成。怎么做?我是 Yii 的初学者,所以不明白何时以及如何使用 scenarios()。谢谢
UPD。我需要将 scenarios() 用于 ONE 字段和 ONE 规则,但是 这条规则的不同 个参数。 - 这不是我的情况。
正如documentation about scenarios()
所说:此方法的默认实现将return在rules()声明中找到的所有场景。所以通常你不会需要覆盖此方法,因为它会寻找 on
数组键来为当前场景设置活动属性并正确验证它们。
因此,在您的情况下,'on' => 'some scenario'
对同一属性的不同验证正是您所需要的。
需要2个功能:注册时设置密码和忘记密码时更改密码。用户注册时,密码长度必须至少为4个字符;当更改通过时 - 至少 5 个字符。
View 是注册和更改通行证的通用视图。显然,还存在 2 个操作,其中使用了任一场景 'signup',或 'change'。 模型中的代码片段:
public function rules() {
return [
['password', 'string', 'min' => 4, 'on' => 'signup'],
['password', 'string', 'min' => 5, 'on' => 'change'],
];
}
但我想通过 scenarios() 来完成。怎么做?我是 Yii 的初学者,所以不明白何时以及如何使用 scenarios()。谢谢
UPD。我需要将 scenarios() 用于 ONE 字段和 ONE 规则,但是 这条规则的不同 个参数。
正如documentation about scenarios()
所说:此方法的默认实现将return在rules()声明中找到的所有场景。所以通常你不会需要覆盖此方法,因为它会寻找 on
数组键来为当前场景设置活动属性并正确验证它们。
因此,在您的情况下,'on' => 'some scenario'
对同一属性的不同验证正是您所需要的。