gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 12:58:39 24 4
gpt4 key购买 nike

利用 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:202015年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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com