验证非模型选择框CakePHP

时间:2014-04-03 14:55:42

标签: cakephp cakephp-2.3

在下面的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' => '',
    ...
)

该规则刚刚在编辑时进行了测试,并且与其余规则一起完美运行。问题是没有任何规则在创建时触发。

2 个答案:

答案 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, ....));

然后将按预期调用验证;)