how to validate multiple entries for same field in cakephp
是否有任何机构可以知道如何验证同一领域的多个条目。 我需要验证并将数据保存到DB表。 我尝试使用通常用于验证数据的验证规则方法,但验证函数返回1,即True而不是错误。 此外,我在一个额外的数组窃取中附加了验证规则它无法正常工作。
请指导我验证多个条目的数据。
控制器代码
1 2 3 4 5 6 | $this->MyModel->set($this->request->data); if($this->MyModel->validates()){ //Some code }else{ pr($this->MyModel->validationErrors); } |
提交表格的输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
MyModel验证规则:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public $validate = array( array( 'resume_id' => array( 'notEmpty'=>array( 'rule' => 'notEmpty', 'message' => 'Invalid resume reference.' ), 'numeric' => array( 'rule' => 'numeric', 'message' => 'Invalid resume reference.' ) ), 'qualification_id' => array( 'notEmpty'=>array( 'rule' => 'notEmpty', 'message' => 'Please enter qualification.' ), 'numeric' => array( 'rule' => 'numeric', 'message' => 'Invalide qualification selected' ) ) ) ); |
谢谢,
帕拉格C.
如果要验证多个记录,则必须使用
它可以实现为:
1 2 3 4 5 6 | $data = $this->request->data; //to prevent $this->request->data from being altered. if($validationErrors=$this->MyModel->validateMany($data)){ //Some code }else{ pr($validationErrors); } |
请参阅CakePHP 2.x API中的
我找到了解决方案,因为Inigo Flores说
型号代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public function validateMany(&$data, $options = array()) { $validationErrors = array(); foreach ($data[$this->alias] as $key => $values) { $this->set($values); if (!$this->validates($values)) { $validationErrors[$this->alias][$key] = $this->validationErrors; foreach ($this->validationErrors as $field => $msg) { $validationErrors[$this->alias][$key][$field]['message'] = $msg[0]; } } } if (!empty($validationErrors)) { unset($this->validationErrors); $this->validationErrors = $validationErrors; return false; } else { return true; } } |
我使用cakephp的
每个表单字段的CTP代码:
1 2 3 4 5 6 7 8 9 10 11 12 | <?php $isError = false; if (!empty($errors['MyModel'][$index]['qualification_id']['message'])) { $isError = true; } ?> "> <?php echo $this->Form->label(_('Qualification')); echo $this->Form->select('MyModel.' . $index . '.qualification_id', $qualifications, array('div' => false, 'required' => false, 'empty' => 'Please select', 'class' => 'form-control', 'maxlength' => 80)); echo ($isError) ? '<span>' . $errors['MyModel'][$index]['qualification_id']['message'] . '</span>' : ''; ?> |
这是一个有点长的过程,但它解决了我的验证问题。
谢谢,
帕拉格C.