【问题标题】:understanding Zend\Form\Element\Date理解 Zend\Form\Element\Date
【发布时间】:2019-10-14 04:14:18
【问题描述】:

我在使用 Zend-Form 日期元素时遇到了两个问题。

第一:字段绑定 我的控制器中的编辑操作未填写现有日期。例如生日。该字段是空的。 (带有元素类型的文本,没有问题)。

我是如何实例化该字段的:

        $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,我尝试了有无。

第二:验证

我无法填写日期。虽然我没有为此字段使用任何过滤器,但我希望我可以填写任何日期。

有趣的是,我得到了双重信息。

【问题讨论】:

    标签: zend-framework zend-form zend-framework3 zend-validate


    【解决方案1】:

    我解决了。

    日期元素需要格式 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);
    

    我想可能更方便。

    【讨论】:

    • 最好在表单创建中而不是在您使用它的控制器中进行此配置.. ;)
    猜你喜欢
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    相关资源
    最近更新 更多