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' 对同一属性的不同验证正是您所需要的。