cakephp2.doc_043
R e i - D r e a m
for Laravel
TOP > CakePHP2 > Model関連(Behavior)
Guest
login

最終投稿日:2019年11月20日

Model関連(Behavior)
CakePHP2.x
 【ビヘイビアファイル設置】

    ■ ビヘイビア設置ディレクトリ
        app/Model/Behavior

    カナをチェックするバリデーション『CustomValidationBehavior.php』を作成する場合

        <?php
        //ビヘイビアはかならず ModelBehavior クラスを継承しないといけない
        class CustomValidationBehavior extends ModelBehavior {

            /**  
            * 文字列が全角カタカナのみかどうかの判定。
            *
            * @param object $model モデルオブジェクト
            * @param array $data バリデート対象のデータ配列
            * @return boolean 全角カタカナのみであればTRUE。違えばFALSE。
            */ 

            function isKatakana(Model $model, $data) {
                $value = current($data);
                if (!preg_match("/^[ァ-ヶー]+$/u", $value)) {
                    return false;
                }
                return true;
            }
        }
        ※$model->data[$model->name][カラム名] で任意のカラム値を参照できる


【モデル側】

    //ビヘイビアを宣言
    public $actsAs = array("CustomValidation");

    ~省略~
        "iskana" => array("rule"=>array("isKatakana")
            ,"message"=>"フリガナは全角カタカナで入力してください"),

        ※バリデート内に上記の様にビヘイビアで作成した「isKatakana」を指定する

    注意)
        実際のビヘイビアの名前は「CustomValidationBehavior.php」、
        クラス名は「CustomValidationBehavior」に対して、モデル側での宣言は「CustomValidation」となる。

        つまり、ビヘイビアのファイル名の命名規則として「任意の名前」+「Behavior.php」となる。
            
CakePHP2.1
【ビヘイビアファイル設置】

    ■ ビヘイビア設置ディレクトリ
        app/Model/Behavior

        カナをチェックするバリデーション『CustomValidationBehavior.php』を作成する場合

        <?php
            //独自のバリデーションメソッドを記述するビヘイビアクラス。
            //これは不要っぽい
            //App::uses('ModelBehavior', 'Model');
             class CustomValidationBehavior extends ModelBehavior {
            /**  
            * 文字列が全角カタカナのみかどうかの判定。
            *
            * @param object $model モデルオブジェクト
            * @param array $data バリデート対象のデータ配列
            * @return boolean 全角カタカナのみであればTRUE。違えばFALSE。
            */ 

                function isKatakana(&$model, $data) {
                    $value = current($data);
                    if (!preg_match("/^[ァ-ヶー]+$/u", $value)) {
                        return false;
                    }
                    return true;
                }
            }
        ?>
       ※ビヘイビアはかならず ModelBehavior クラスを継承しないといけない
       ※$model->data[$model->name][カラム名] で任意のカラム値を参照できる


【モデル側】

    //ビヘイビアを宣言
    var $actsAs = array("CustomValidation");

    ....
        "iskana" => array("rule"=>array("isKatakana")
            ,"message"=>"フリガナは全角カタカナで入力してください"),
    ....
    
        バリデート内に上記の様に(isKatakana)指定する
            
きっぷる
ログインしてコメントを残そう!!


きっぷる