WordPress・WEB系の開発(プログラム)関係や技術情報ほか、技術情報全般を掲載

  • このエントリーをはてなブックマークに追加

CakePHP 複数のバリデーションを切り替える方法

モデルに定義したバリデーションのルールをコントローラ毎やアクション毎に切り替える必要な場合は、下記設定例のように設定を上書きする形で切り替えます。

■コントローラ内のアクション毎にバリデーションルールを切り替え:

/**
 * フォーム①
 */
function form ()
{
    if ( isset($this->params['data']['enter']) ) {
        //フォーム①の入力チェック
        if( $this->Form->validates() ){
            
        }
    }
}
/**
 * フォーム②
 */
function form2()
{
    if ( isset($this->params['data']['enter']) ) {
        //フォーム②の入力チェック
        $this->Form->validate = $this->Form->validate2; //切り替える
        if( $this->Form->validates() ){
            
        }
    }
}

■モデル内のバリデーション設定

/**
 * フォーム①用入力チェックルール
 */
public $validate = array(
    'name' => array(
        'rule'    => array('notEmpty'),
        'message' => '入力してください'
    ),
);
/**
 * フォーム②用入力チェックルール
 */
public $validate2 = array(
    'name' => array(
        'maxLength' => array(
            'rule' => array('maxLength','10'),
            'allowEmpty' => false,
            'message' => '10文字以内で入力してください'
        ),
        'notEmpty' => array(
            'rule' => array('notEmpty'),
            'message' => '入力してください'
        )
    ),
);

※環境情報:
サーバ・・・CORESERVER
CakePHP・・・CakePHP 2.4.6

関連記事

コメントは利用できません。

アーカイブ