web-dev-qa-db-ja.com

Yii:1つのシナリオを除いて常に適用される検証ルール

1つのシナリオにのみ適用される検証ルールを設定できることを知っています。

array('username', 'exist', 'on' => 'update'),

今、私は反対のことをすることが可能かどうか知りたいです:与えられたシナリオを除いて毎回適用されるルール?

現在見られる唯一の解決策は、他のすべてのシナリオをリストすることですが、後でいくつかのニュースシナリオを追加する必要がある場合はきれいではありません。

array('username', 'exist', 'on' => array('create', 'search', ...),//all the scenarios except update
21
darkheir

Yii 1.1.11以降、exceptキーワードを使用できます:

array('username', 'exist', 'except' => 'update'),

このページ を見てください。そこに小さな例があります。

ドキュメントリンク

36
rinat.io

Yii 2.0でも同じように機能します。

['username', 'required', 'except' => 'update']

バリデーターの名前の前にある配列内のすべてのキーは、バリデータークラス自体のプロパティです。利用可能なプロパティは https://www.yiiframework.com/doc/api/2.0/yii-validators-validator で確認できます。

私は古い質問であることを知っていますが、yii2がバリデータークラスにexceptプロパティを持っていることを忘れるたびに。

https://www.yiiframework.com/doc/guide/2.0/en/input-validation より高度な技術の場合