0

私は Yii フレームワークを初めて使用し、モデル内に記述された検証ルールに関して混乱しています。例:
array('email','safe'),
array('username, password', 'required', 'on'=>'login, register'),

1-安全なバリデーターの用途と使用場所
2-シナリオでの使用とその使用方法は? 'on'=>'register'と書いたとすると、'register' がアクション名かそれ以外か。

多くのドキュメントを調べた後でも、まだあまり明確ではありません。誰かが例を挙げて説明できますか。

4

2 に答える 2

5

安全なバリデーターの用途と使用場所は?

safeバリデーターを使用して、「このフィールドは何でも受け入れることができ、検証を実行する必要がない」ことを示すことができます。一括割り当て時に関連します。

$model->attributes = $_POST['Model'];

フィールドにルールが設定されていない場合、その値はこの割り当て後に更新されません。フィールドが検証を必要としないが、この場合でも更新する必要がある場合は、safeルールを使用してこれを示すことができます (ただし、検証は良いことなので注意してください)。


シナリオでの使用とその使用方法は何ですか? 'on'=>'register' と書いた場合、'register' はアクション名か何かでしょうか。

この場合、registerシナリオです(選択した任意の文字列で、モデルに何が起こっているかを説明します)。一括割り当てやその他の作業を実行する前に、コントローラーでモデルのシナリオを割り当てます。モデルを検証するときが来ると、Yii はモデルのscenarioプロパティを調べ、それに基づいてバリデータを実行します。(妥当なサイズのプロジェクトでは、一貫性を保つために、任意の文字列ではなくクラス定数を使用する必要があります。)

例: ユーザーのパスワードの変更。次のバリデーターを設定してpassword、このシナリオでのみフィールドを必須としてマークすることができます。それ以外の場合はそうではありません。

// validator in the model class
array('password', 'required', 'on' => 'change-password'),

// code in the right controller's action
$user->scenario = 'change-password'; // set the scenario
$user->attributes = $_POST['User'];
$user->validate(); // if the password is not set, this will result in a validation error

詳細情報と詳細情報へのリンクについては、この回答を参照してください。

于 2013-01-09T10:42:09.833 に答える
0

以下の記事を読みましたか?

http://www.yiiframework.com/wiki/56/

http://www.yiiframework.com/wiki/161/understanding-safe-validation-rules/

安全関連付けられた属性を大規模な割り当てに対して安全であるとマークします。 キーワードで、ログイン、登録などのシナリオを指定します

于 2013-01-09T10:41:03.090 に答える