php - ZF2 始终验证日期和时间格式 PT_BR 输入似乎不是有效日期

标签 php mysql date datetime zend-framework2

利用 ZF2 + Doctrine 2 的项目。

我尝试了多种格式。我正在使用未经验证的表单。

我最后一次尝试是:

    $traindate = new Element\DateTime('trainDate');
    $traindate->setAttributes(array(
        'name' => 'trainDate',
        'id' => 'trainDate',
        'size' => '30',
        'class' => 'datepicker',
        'options' => array(
            'label' => '',
            'format' => 'd-m-Y H:i'
        ),
    ));

我需要使用输入来设置事件的日期和时间。在巴西,基本格式是: 2014年5月14日 14:20 2015年5月15日 15:00

With 意味着天、月、年、小时、分钟,就像我在选项 -> 格式中表达的那样。

这样,当我尝试插入时,我总是会收到以下消息: 输入的日期似乎无效

删除格式后,我只能通过 Y-m-d (美国格式)通过 $form->isValid($data),但是顺便说一句,我也无法通过 date 时间,这给我带来了很大的麻烦。

我需要在表单/输入上设置日期 PT_BR,通过验证,将数据转换为 Mysql 格式(YYYY-mm-dd HH:ii:ss)。 然后从数据库检索并转换回 pt_br 格式。

但即使我也无法将带有日期的时间传递到 zf2 表单,永远不会出现此错误消息。

我从该表单中删除了所有过滤器,试图获得工作,但不起作用。

主要问题在哪里?

最佳答案

经过很长时间的关注这个问题,我找到了正确且快速的解决方案。 经过 6 个月的科学研究,我得到了:

<小时/>

对了:

    $traindate = new Element\DateTime('trainDate');
    $traindate->setAttributes(array(
        'name' => 'trainDate',
        'id' => 'trainDate',
        'size' => '30',
        'class' => 'datepicker',
    ));
    $traindate->setFormat('d/m/Y'); //ONLY WORKS ON THIS FORMAT.

文档和互联网上的人没有说清楚,但设置格式仅适用于此表单。

要将其获取到实体,您需要编写自己的 Hydrator 来扩展 DoctrineHydrator:

namespace Application\Hydrator;
use DoctrineModule\Stdlib\Hydrator\DoctrineObject;

class MyCustomHydrator extends DoctrineObject {
    protected function handleTypeConversions($value, $typeOfField) 
    {

        if($typeOfField == 'datetime'){
            return \DateTime::createFromFormat('d/m/Y', $value);
        }

        return parent::handleTypeConversions($value, $typeOfField);
    }
}

它使使用任何日期格式变得简单。您可以根据需要进一步扩展在此自定义水化器上进行区域设置断言。

关于php - ZF2 始终验证日期和时间格式 PT_BR 输入似乎不是有效日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23666296/

相关文章:

php - 使用 Zend Date 将当前日期插入 MySql

php - "Lost connection to MySQL server"由于各种原因

php - 使用sql查询仅检索数字

php - 我们如何编写这样的 PHP 脚本?

php - 在 MySQL 数据库中存储今天的日期

asp.net - 日期正则表达式验证器

iphone - 是否可以定义适应可变数据的日期格式?

php - 如何从 PHP 使用 bash 脚本?

MySql 使用另一个表中的数据更新一个表

php - SQL INSERT INTO 不起作用