良い子のみんなは同じモデルにおいて「この局面に限り、このバリデーションを外したい」なんてことがあると思います。そのあたり、the Bakeryでも抑えてくれているわけです。
Simple Way to Unbind Validation & Set Remaining Rules to Required :: The Bakery: Everything CakePHP
で、英語読むの辛くてEDになりそうなあなたのために、僕が簡単に書いておくよ!これで動くよ!
<?php //モデルのソース var $validate = array( "title" => array( "rule" => VALID_NOT_EMPTY, "message" => "タイトルが未記入です。", ), "body" => array( "rule" => VALID_NOT_EMPTY, "message" => "本文が未記入です。", ), );
まぁこんなのがあるとします。で、modelにこういうメソッドを追加します。validateで定義されている配列をflipして無効化する。
<?php function unbindValidate($fields = array()) { $this->validate = array_diff_key($this->validate, array_flip($fields)); }
で、実際に使うときはこんな感じ。modelでsaveする前に使ったり。
<?php //keyがbodyのヤツはバリデートしない $this->unbindValidate(array("body"));
おしまい。