[英]ZF2: 'required' => false ignored for DateSelect element
在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
元素的源代碼, DateSelect
看到一個getInputSpecification()
方法,該方法默認情況下將必需設置為false,還有一個getValidator()
方法要求使用不符合空白日期的格式。
如果不需要輸入,如何繞過驗證(顯然,以我的實際形式,我有更多元素)?
我通常使用工廠模式,您可以設置是否需要該字段,即
$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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.