Life is Really Short, Have Your Life!!

ござ先輩の主に技術的なメモ

Validateの切り替え

良い子のみんなは同じモデルにおいて「この局面に限り、このバリデーションを外したい」なんてことがあると思います。そのあたり、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"));

おしまい。