用extbase验证空日期字段的问题

时间:2019-03-26 22:08:30

标签: extbase typo3-8.x

如果我的开始日期字段为空,为什么Extbase会引发异常。如果日期格式错误,则验证有效。但是一个空值将显示以下内容:

未捕获到的TYPO3异常... Events :: setEnd()必须是DateTime的实例,给定为null ...

我的模型中的以下代码有什么问题?

    /**
     * start
     *
     * @var \DateTime
     * @validate NotEmpty
     * @validate(type="DateTime", options={"locale"="de_DE"})
     */
    protected $start;

这是我的TCA

    'start' => [
        'exclude' => false,
        'label' => 'Start',
        'config' => [
            'type' => 'input',
            'renderType' => 'inputDateTime',
            'size' => 10,
            'eval' => 'datetime',
            'default' => time()
        ],
    ],

缓存已清除,typo3temp文件夹已删除。

  

更新
  也许错误是在我必须设置日期格式的initializeUpdateAction()中?

    public function initializeUpdateAction() {

        $user = $this->request->getArgument('feUsers');
        $events = $user['events'];
        if( is_array($events) ) {
            foreach ($events as $i => $event) {
                $this->arguments->getArgument('feUsers')
                    ->getPropertyMappingConfiguration()->forProperty('events.'.$i.'.start')
                    ->setTypeConverterOption(
                        'TYPO3\\CMS\\Extbase\\Property\\TypeConverter\\DateTimeConverter',
                        \TYPO3\CMS\Extbase\Property\TypeConverter\DateTimeConverter::CONFIGURATION_DATE_FORMAT,
                        'd.m.Y'
                    );
            }
        }

    }

1 个答案:

答案 0 :(得分:0)

加强您的验证:

--profile

空白日期字段用 'eval' => 'datetime,int', 表示,这不是有效的日期格式。