在下面的a中有一个与任何数据库字段无关的选择框:
echo $this->Form->create('Event');
echo $this->Form->input('customer_id', array('label' => __('Customer')));
echo $this->Form->input('service_id', array('label'=>__('Service')));
echo $this->Form->select('user_id', $users, array('multiple'=>true));
echo $this->Form->end(__('Save'));
在事件模型中,我有一个验证规则如下:
var $validate = array(
'user_id'=>array(
'notempty'=> array(
'rule'=>'notEmpty',
'message'=> 'Vælg en medarbejder'
)
))
问题是永远不会调用此验证规则。问题可能是什么?
以下是来自submition之后的数据转储:
array(
'customer_id' => '107',
'service_id' => '195',
'user_id' => '',
...
)
该规则刚刚在编辑时进行了测试,并且与其余规则一起完美运行。问题是没有任何规则在创建时触发。
答案 0 :(得分:0)
您需要手动验证。在您的控制器中试试这个。
$this->Event->set($this->request->data);
if ($this->Event->validates()) {
//Save your data by calling $this->Event->save($this->request->data);
} else {
// didn’t validate logic
$errors = $this->ModelName->validationErrors;
}
答案 1 :(得分:0)
验证不适用于select(),hidden(),radio()等。您应该始终通过Form :: input(),如:
$this->Form->input(
'user_id',
array(
'type'=>'select',
'options'=>$users,
'multiple'=>true, ....));
然后将按预期调用验证;)