安全なバリデーターの用途と使用場所は?
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
詳細情報と詳細情報へのリンクについては、この回答を参照してください。