2

在 \Zend\Validator\DateStep 中,我想覆盖如下所示的错误消息:

protected $messageTemplates = array(
    self::NOT_STEP     => "The input is not a valid step"
);

我有一个输入过滤器连接到一个包含“Zend\Form\Element\Date”类型元素的表单,它会自动调用 DateStep 验证器。

这是我的表格的相关部分:

$this->add(array(
         'type' => 'Zend\Form\Element\Date',
         'name' => 'appointment-date',
         'options' => array(
                 'label' => 'Appointment Date',
                 'format' => 'Y-m-d'
         ),
         'attributes' => array(
                 'min' => date('Y-m-d'), // today's date
                 'max' => '2020-01-01',
                 'step' => '2', // days; default step interval is 1 day
         )
     ));

这是我的输入过滤器:

$inputFilter->add($factory->createInput(array(
            'name'     => 'appointment-date',
            'required' => false,
            'filters'  => array(
                array('name' => 'StripTags'),
            ),
            'validators' => array(
                array(
                    'name' => 'DateStep',
                    'options' => array(
                        //'step'     => new DateInterval("P2D"),
                        //'baseValue' => new DateTime(),
                        'messages' => array(
                                \Zend\Validator\DateStep::NOT_STEP => 'Must be a day in the future',
                        ),
                    ),
                ),
            ),
        )));

inputFilter 似乎被忽略了。我尝试在 inputFilter 中设置 step 和 baseValue,但这似乎根本不起作用。如果需要更多详细信息,可以在此处找到工作应用程序:https ://github.com/bickerstoff/zf2_datetest。

4

1 回答 1

1

看起来您正在尝试使用“DateStep”验证器过滤“日期”输入。

$this->add(array(
     'type' => 'Zend\Form\Element\Date',
      'name' => 'appointment-date',
      'options' => array(
          'label' => 'Appointment Date',
          'format' => 'Y-m-d'
       ),
     'attributes' => array(
          'min' => date('Y-m-d'), // today's date
          'max' => '2020-01-01',
           'step' => '2', // days; default step interval is 1 day
      )
));

这可能会导致您的问题。

于 2013-06-03T07:55:51.200 回答