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.'
                )
              )

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 に答える