Validation 科哈纳验证&x27;匹配项';规则
我将Kohana 3.3用于一个项目,其中有一个扩展ORM的模型类。MySQL数据库中有一个与此模型对应的表。在此表中,有3列不应具有相同的值。我还有一个视图,用户可以在其中添加到此模型,其中item1、2、3是文本输入字段。 我试图在模型中编写验证,该模型强制执行项1、2、3不能具有相同值的规则。 代码的结构和相关部分如下所示: 数据库表:Validation 科哈纳验证&x27;匹配项';规则,validation,kohana,Validation,Kohana,我将Kohana 3.3用于一个项目,其中有一个扩展ORM的模型类。MySQL数据库中有一个与此模型对应的表。在此表中,有3列不应具有相同的值。我还有一个视图,用户可以在其中添加到此模型,其中item1、2、3是文本输入字段。 我试图在模型中编写验证,该模型强制执行项1、2、3不能具有相同值的规则。 代码的结构和相关部分如下所示: 数据库表: id | column1 | othercolumns | item1 | item2 | item3 public function rules()
id | column1 | othercolumns | item1 | item2 | item3
public function rules(){
return array(
"item1" => array( array('matches', array(':validation',':field','item2') ) ),
"item1" => array( array('matches', array(':validation',':field','item3') ) ),
//same for item2 and item3
);
}
型号类别:
id | column1 | othercolumns | item1 | item2 | item3
public function rules(){
return array(
"item1" => array( array('matches', array(':validation',':field','item2') ) ),
"item1" => array( array('matches', array(':validation',':field','item3') ) ),
//same for item2 and item3
);
}
我阅读了,翻页了,但我无法理解如何直接在模型中正确地实现这一点。
(我可以在客户端的JavaScript中执行此操作,但我希望避免这样做,将其留给框架!)您只需要一个验证回调:
return array(
'item1' => array(function($field, Validation $object, $compare1, $compare2) {
$values = array($object[$field], $object[$compare1], $object[$compare2]);
if (count(array_unique($values)) < count($values))
{
$object->error($field, 'unique_fields');
}
}, array(':field', ':validation', 'item2', 'item3'))
);
返回数组(
'item1'=>数组(函数($field,Validation$object,$compare1,$compare2){
$values=数组($object[$field],$object[$compare1],$object[$compare2]);
if(计数(数组_唯一($value))error($field,'unique_fields');
}
},数组(':field',':validation',item2',item3'))
);
这只是一个简单的例子。例如,您可以使用动态字段计数。谢谢,我想我了解这里发生的事情了!谢谢你的帮助!