0

我在模型中有一个 cakephp 2.1 验证规则

 'name' => array(

                'empty' => array(
                  'rule' => 'notEmpty',
                  'required' => true,
                  'allowEmpty' => false,
                  'message' => 'Name is required.'
                ),
                'unique' => array(
                'rule' => 'checkUnique',
                'required' => true,
                'allowEmpty' => false,
                'message' => 'Name already exists.'
                )
              )

我有以下用于 te checkUnique 方法的代码:

  public function checkUnique($data)
  {
//App::import('Model','User');
// $this->User = & new User();


if(empty($this->data['TeacherLocation']['id']))
{
    $locationInfo = $this->find
    (
        'all',
        array
        (
            'conditions'=>array
            (
                'user_id' => $this->data['TeacherLocation']['user_id'],
                'name' => $this->data['TeacherLocation']['name']
            ),
            'recursive' => -1
        )
    );

    return (empty($locationInfo));

但我不断收到无法找到索引 user_id 的错误。是什么赋予了?

4

2 回答 2

0

isUnique 已经内置在 cake 中:

'name' => array(
    'isUnique' => array(
        'rule' => array('isUnique'),
        'message' => 'Name already exists',
    ),
于 2012-06-15T21:26:31.227 回答
0

所以基本上你想根据附加字段检查 isUnique ,对吗?

试试我的 validateUnique 方法: https ://github.com/dereuromark/tools/blob/2.0/Lib/MyModel.php#L818

所以你得到了:

     'name' => array(
         ...
         'unique' => array(
            'rule' => array('validateUnique', array('user_id')),
            'required' => true,
            'allowEmpty' => false,
            'message' => 'Name already exists.'
         )
      )

您的问题似乎是即使您传递的数据中没有 user_id,您的验证方法也会被触发。

于 2012-06-14T08:55:16.810 回答