例えば
echo $this->Form->input('user_id', array( 'label' => '担当者', 'multiple' => 'checkbox', 'options' => $userList, ));
こんなフォームを書いていたとして、notemptyでは検証できない。
こういう時は、multipleを使う。
今までもこうしたバリデーションを書いたことがあるはずなのに、初めて目にするような衝撃だった。
ヤバイ。疲れてる。
public $validate = array( 'user_id' => array( 'notempty' => array( 'rule' => array('multiple'), 'message' => '担当者は必ず1人以上選択してください', //'allowEmpty' => false, //'required' => false, //'last' => false, // Stop validation after this rule //'on' => 'create', // Limit validation to 'create' or 'update' operations ), ), );
参考:Data Validation ? CakePHP Cookbook v2.x documentation
Do not use this for a multiple select input as it will cause an error. Instead, use “multiple”.