有2个需要的功能:注册时设置密码和更改密码,如果用户忘记了。用户注册时,密码长度必须至少为4个字符;当变化通过时 - 至少5个字符。
查看对于注册和更改传递很常见。显然,还存在2个动作,其中任一个场景'注册',或者使用'改变'。 模型中的代码段:
public function rules() {
return [
['password', 'string', 'min' => 4, 'on' => 'signup'],
['password', 'string', 'min' => 5, 'on' => 'change'],
];
}
但我想通过 scenario()来做。怎么做?我是Yii的初学者,所以不明白,何时以及如何使用 scenario()。感谢。
UPD 即可。我需要将 scenario()用于带有 ONE 规则的 ONE 字段,但不同参数应用于此规则。 how to define a scenario in Yii2? - 这不是我的情况。
答案 0 :(得分:6)
正如documentation about scenarios()
所说:此方法的默认实现将返回rules()声明中找到的所有方案。因此通常您不需要重写此方法,因为它将查找on
数组键以设置当前方案的活动属性并正确验证它们。
因此,在您的情况下'on' => 'some scenario'
对同一属性的不同验证正是您所需要的。