3


Yii を使用してプロジェクトに「ドラフトとして保存」機能を実装しようとしています。私は2つのボタンを持つフォームを持っています: - Submit と Save 。[送信] ボタン をクリックすると、必須フィールドを含むすべてのフィールドが検証された後、フォーム データがデータベースに保存されます。それは完璧に機能します。[保存] ボタンをクリックすると、デフォルトの検証なしでフォーム データをデータベースに保存する必要があります。コントローラーアクションでこの検証の無効化を実装するにはどうすればよいですか??
すべてのアドバイスは受け入れられます..
ありがとう

4

2 に答える 2

13

検証ルールをまとめてオフにするのは簡単です。

$model->save(false);

これは検証を行わず、モデルを保存しようとします (データベース側ではまだ失敗する可能性があります)。

ただし、検証を実行したい場合はここでシナリオを調べてください。モデルを初期化するシナリオに応じて、異なるルール セットを指定できます。そうすれば、検証ルールのセット全体のみをオン/オフにすることができます。

$model = new Thingy();
$model->save(); // All default validation rules

$model = new Thingy('draft');
$model->save(); //Applies all default & "draft" validation rules
于 2013-01-07T08:52:49.813 に答える
1

あなたの質問はコントローラーで言いますが、私が知る限り、コントローラーには、たとえばアクセス許可をチェックするフィルターがあります。ガイドのこのセクションで説明されているように、これはオーバーライドできます。モデルで行われる検証を意味する場合は、シナリオを使用できます(ルールをシナリオにバインドすることで検証をバイパスし、他のシナリオでは検証を行いません)。同様の問題について議論しているこのスレッドを確認してください

私があなたの質問を誤解した場合は、ここにコメントしてください。それに応じて回答を更新します。

于 2013-01-07T08:53:47.183 に答える