LoginSignup
1
1

More than 5 years have passed since last update.

[CakaPHP 2.3.9]inList validationで型チェックを行わないようにする

Last updated at Posted at 2015-02-18

経緯

  • CakaPHP 2.3.9においてinListはデフォルトで型チェックを行う。
    そのためformから送信したデータとvalidateで用意した型の食い違いにより思うような結果にならなかった事から型のチェックを行わないようにしたいと思った。

思うような結果にならなかった時のコード

  • Modelで次のようなvalidateを用意。
$this->validate = array(
    'list' => array(
        'rule' => array('inList', array(1, 2, 3)),
        'required' => true,
        'allowEmpty' => false,
        'message' => 'invalid',
    ),
);
  • Viewで次のようなradioがある。
<?php echo $this->Form->radio(
    'list',
    array(1, 2, 3)
); ?>
  • formで送信されると値はstringになるが、validateでの定義はintにより、型が異なることでバリデーションでひっかかる。

inListで行われる処理を確認

  • lib/Cake/Utility/Validation.phpを確認したところ...
public static function inList($check, $list, $strict = true) {
    return in_array($check, $list, $strict);
}

inListで型のチェックを行わないように設定変更

  • Modelのvalidateで型のチェックまで行いたくないのでinListにfalseを渡すよう変更。
$this->validate = array(
    'list' => array(
        'rule' => array('inList', array(1, 2, 3), false),
        'required' => true,
        'allowEmpty' => false,
        'message' => 'invalid',
    ),
);
  • 型のチェックを行わないことでバリデーションを通るようになった。
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1