使用Zend-Form日期元素时遇到两个问题。
第一:字段绑定 我的控制器中的edit操作未填写现有日期。例如生日。该字段为空。 (使用元素类型文本,就没有问题)。
这是我对这个领域的理解:
$this->add([
'name' => 'geburtstag',
'type' => 'date',
'options' => [
'label' => 'Geburtstag:',
'format' => 'dd/mm/yyyy',
],
]);
这是我的控制器动作。
public function addAction()
{
$form = new AnsprechpartnerForm(NULL, $this->db);
$form->get('submit')->setValue('save');
$request = $this->getRequest();
if (! $request->isPost()) {
return ['form' => $form];
}
$ansprechpartner = new Ansprechpartner();
$form->setInputFilter($ansprechpartner->getInputFilter());
$form->setData($request->getPost());
if (! $form->isValid()) {
return ['form' => $form];
}
$ansprechpartner->exchangeArray($form->getData());
$this->ansprechpartnerTable->saveAnsprechpartner($ansprechpartner);
return $this->redirect()->toRoute('ansprechpartner');
}
目前还没有inputFilter
,我尝试了有无。
第二:验证
我在填写日期时遇到麻烦。虽然我希望此字段不使用任何过滤器,但我可以填写任何日期。
有趣的是,我得到了双重提示。
答案 0 :(得分:0)
我解决了。
date元素的格式为y-m-d。现在,在绑定表单后,我直接将其提供给该字段。现在,该字段的格式也为korrekt。
$form->bind($notizen);
$form->get('submit')->setAttribute('value', 'edit');
$filter = new \Zend\Filter\DateTimeFormatter();
$filter->setFormat('Y-m-d');
$dat = $filter->filter($notizen->datum);
$form->get('datum')->setValue($dat);
我想可能会更方便。