CakePHP验证 - isUnique OR inList

时间:2011-07-04 23:48:21

标签: validation cakephp

(CakePHP的新手,所以这可能是一个显而易见的事情,但在搜索了几个小时之后我无法找到解决方案 - “或”的模糊性,我想...)< / em>的

我正在尝试修改现有的CakePHP验证规则,该规则使用isUnique规则,以便它验证满足isUnique规则或inList规则的值。

上一段代码:

'isUnique' => array(
  'rule' => 'isUnique' ,
  'message' => "We're sorry, but this QA number is already being used.",
  'last' => TRUE,
),

我的(错误的)代码:

'isUnique' => array(
  'rule' => array( 
    'isUnique' ,
    array( 'inList' , array( '111213' , '141516' , '171819' , '202122' ) )
  ) ,
  'message' => "We're sorry, but this number is already being used.",
  'last' => TRUE,
),

所以,(这可能很简单),如何将CakePHP验证规则与“OR”逻辑运算符串联起来?我可以看到你可以应用一系列“AND”规则(针对特定问题进行每次测试,如果测试失败,则拒绝该值),但“OR”规则让我摸不着头脑......

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:2)

你必须把它变成custom validation rule。在您的模型中添加:

public function isUniqueOrInList(array $data, array $list) {
    return in_array(current($data), $list) || $this->isUnique($data);
}

然后声明你的规则:

'rule' => array('isUniqueOrInList', array('111213', '141516', '171819', '202122'))