Yii2:scenario()模型方法

时间:2015-07-06 18:10:02

标签: php yii2 yii-validation

有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? - 这不是我的情况。

1 个答案:

答案 0 :(得分:6)

正如documentation about scenarios()所说:此方法的默认实现将返回rules()声明中找到的所有方案。因此通常您不需要重写此方法,因为它将查找on数组键以设置当前方案的活动属性并正确验证它们。

因此,在您的情况下'on' => 'some scenario'对同一属性的不同验证正是您所需要的。