在\ 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。
答案 0 :(得分: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
)
));
这可能会导致您的问题。