3

必要な機能は 2 つあります。登録時にパスワードを設定する機能と、ユーザーがパスワードを忘れた場合にパスワードを変更する機能です。ユーザーがサインアップするとき、パスワードの長さは少なくとも 4 文字である必要があります。変更が通過したとき - 少なくとも 5 文字。

ビューは、登録とパスの変更に共通です。明らかに、2 つのアクションも存在し、いずれかのシナリオで「サインアップ」または「変更」が使用されます。モデルのコード スニペット:

public function rules() {
     return [
       ['password', 'string', 'min' => 4, 'on' => 'signup'],
       ['password', 'string', 'min' => 5, 'on' => 'change'],
     ];
}

しかし、私はscenario()経由でやりたいです。どうやってするの?私は Yii の初心者なので、scenario()をいつ、どのように使用するかを理解していませんでした。ありがとう。

UPD1 つのルールで 1 つのフィールドscenario()を使用する必要がありますが、この 1 つのルールには異なる引数が必要です。Yii2でシナリオを定義するには? - それは私の場合ではありません。

4

1 に答える 1

6

ドキュメントにscenarios()あるように:このメソッドのデフォルトの実装は、 rules() 宣言で見つかったすべてのシナリオを返します。したがって、通常、このメソッドをオーバーライドする必要はありません。配列キーを探してon、現在のシナリオのアクティブな属性を設定し、それらを適切に検証するためです。

したがって'on' => 'some scenario'、同じ属性の異なる検証の場合、まさに必要なものです。

于 2015-07-06T19:09:17.070 に答える