ZF2: 'required' => false 忽略 DateSelect 元素
Posted
技术标签:
【中文标题】ZF2: \'required\' => false 忽略 DateSelect 元素【英文标题】:ZF2: 'required' => false ignored for DateSelect elementZF2: 'required' => false 忽略 DateSelect 元素 【发布时间】:2013-04-15 16:40:19 【问题描述】:在 Zend Framework 2 应用程序中,我的控制器操作方法中有以下表单:
public function testAction()
$form = new \Zend\Form\Form('test');
$date = new \Zend\Form\Element\DateSelect('date');
$date->setOptions(array(
'label' => 'Date',
'min_year' => date('Y') - 10,
'max_year' => date('Y') + 10,
)
);
$date->getDayElement()->setEmptyOption('day');
$date->getMonthElement()->setEmptyOption('month');
$date->getYearElement()->setEmptyOption('year');
$form->add($date);
$form->add(array(
'name' => 'submit',
'attributes' => array(
'type' => 'submit',
'value' => 'submit',
'id' => 'submitbutton',
),
));
if ($this->request->isPost())
$data = $this->request->getPost();
$form->setData($data);
if ($form->isValid())
$data = $form->getData();
// more code
return array('form' => $form);
现在,如果我提交表单,我会收到验证消息:
'输入的日期似乎不是有效日期'
这是正确的,但我只想知道该字段是否是必需的。如果我查看 DateSelect
元素的源代码,我会看到 getInputSpecification()
方法默认设置为 false,还有一个 getValidator()
方法需要空日期不符合的格式。
如果不需要输入,我如何绕过验证(显然,在我的真实表单中,我有更多元素)?
【问题讨论】:
【参考方案1】:我一般使用工厂模式,可以设置字段是否为必填即
$inputFilter->add($factory->createInput(array(
'name' => 'availableDate',
'required' => true,
'filters' => array(
array('name' => 'StripTags'),
array('name' => 'StringTrim'),
),
'validators' => array(
array(
'name' => 'StringLength',
'options' => array(
'encoding' => 'UTF-8',
'max' => 20,
),
),
),
)));
参考必填字段 - 您可以将其设置为 false
【讨论】:
以上是关于ZF2: 'required' => false 忽略 DateSelect 元素的主要内容,如果未能解决你的问题,请参考以下文章