Kohana验证'匹配'规则

时间:2013-05-10 17:18:12

标签: validation kohana

我正在使用 Kohana 3.3 来开展一个扩展ORM的模型类的项目。 MySQL数据库中有一个与该模型相对应的表。在此表中,有3列不应具有相同的值。我还有一个视图,用户可以添加到此模型,其中item1,2,3是文本输入字段。 我试图在模型中编写验证,该验证强制执行item1,2,3不能具有相同值的规则。 代码的结构和相关部分是这样的:

数据库表:

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
    );
}

我看了thisthisthis页面,我无法理解如何在模型中直接正确实现 。 (我可以在客户端的JavaScript中执行此操作,但我希望避免将其留在框架中!)

1 个答案:

答案 0 :(得分:1)

您只需要验证回调:

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

这只是一个简单的例子。例如,您可以使用动态字段计数。