如何检查cakephp中字段的组合验证

时间:2014-05-15 06:47:18

标签: cakephp cakephp-2.0

我想检查重复值的两个字段组合验证。我有两个字段名称和区域组。

$this->validate['Name'] = array(
        'notEmpty' => array(
            'rule' => array('notEmpty'),
            'message' => __('err_required', array(__('lbl_Name', true))), 
        ),
       'Name' => array(

            'rule' => array('uniqueClick', 'GroupID'),
            'message' => __(__('lbl_Combination', true)), 
        )
    );  

    $this->validate['GroupID'] = array(
        'notempty' => array(
            'rule' => array('notEmpty'),
            'allowEmpty' => true,
            'message' => __('err_required', array(__('lbl_GroupID', true))), 
        )
    );

    public function uniqueClick ($ip)
        {   
            $count = $this->find('count', array(
              'conditions' => array(
                  'Name' => $ip,
                  'GroupID' => $this->data[$this->alias]['GroupID'])
           ));
           return $count == 0;
        }

通过此代码检查添加和更新情况下的组合,我想在两种情况下检查组合,但是通过此代码,它总是在添加后检查编辑案例。所以请给我适当的解决方案。快速回复。

1 个答案:

答案 0 :(得分:0)

创建自定义方法在名称或组中使用它,并将name / group的值传递给自定义函数,并将检查功能放入:

$this->validate['Name'] = array(
    'notEmpty' => array(
        'rule' => array('notEmpty'),
        'message' => __('err_required', array(__('lbl_Name', true))), 
    )              
);  
 $this->validate['GroupID'] = array(
    'notempty' => array(
         'rule' => array('notEmpty'),
         'message' => __('err_required', array(__('lbl_GroupID', true))), 
     ),
    'duplicate' => array(
         'rule' => array('isDuplicate', $this->data['ModelName']['name']),
         'message' => __('err_required', array(__('lbl_GroupID', true))), 
     )
 );

public function isDuplicate($data, $name){
    // check here
}