zend framework 2 - 使用验证器比较2个输入?

时间:2013-07-25 03:37:20

标签: php zend-framework zend-framework2 zend-form zend-validate

我是zend框架2的新手,我有一个关于比较工厂支持形式的两个输入的问题。我的方案如下:

我想比较两个输入,例如$startDate$endDate。我想确认$startDate始终小于$endDate。我该怎么做?例如:

$inputFilter->add($factory->createInput(array(
                'name'     => 'startDate',
                'required' => true,
                'validators' => array(
                    array(
                        'name'    => 'LessThan',
                        'options' => array(
                            'max'      => $endDate,
                        ),
                    ),
                ),
            )));

仅供参考,我正在关注相册教程,并在$inputFilter中创建了classTable.php

由于

2 个答案:

答案 0 :(得分:4)

感谢Crisp!我用类似的东西解决了它:

$inputFilter->add($factory->createInput(array(
            'name'     => 'startDate',
            'required' => true,
            'name'     => 'Callback',
                'options' => array(
                    'message' => array( 
                        Callback::INVALID_VALUE => 'Invalid period is given.',
                    ),
                    'callback' => function($value, $context=array()) {
                        return $value < $context['endDate'];
                    },
                ),
            )));

答案 1 :(得分:0)

上面的答案可能是正确的,但可能会出现一些语法或回调错误。原因是,我们通常在模型InputFilters中使用回调验证函数,而不是在表单定义部分(从Zend Framework版本2.2.1开始)。

此回调脚本部分应位于Model - InputFilters内​​,请参阅此链接:https://stackoverflow.com/a/19263037/2190889

根据此Url参考,日期验证部分可以正常运行。