个性化阅读
专注于IT技术分析

如何解决Symfony 5异常:启用”html5″选项后,无法使用”Symfony\Component\Form\Extension\Core\Type\DateType”的”format”选项

在最后的日子里, 我将Symfony 4项目升级到Symfony5。大多数内容保持兼容, 并且升级起来也很容易, 但是有些事情引发了异常, 包括我的某些FormType中的错误。

包括日期字段的FormTypes引发以下异常:启用” html5″选项后, 无法使用” Symfony \ Component \ Form \ Extension \ Core \ Type \ DateType”的” format”选项。好吧, 我的DateType字段的配置中肯定没有html5选项:

<?php

namespace App\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

// Importing DateType
use Symfony\Component\Form\Extension\Core\Type\DateType; 

class TemplatesType extends AbstractType
{
    // ... 

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        // This throws the exception
        $builder
            ->add('datePublished', DateType::class, [
                'widget'=>'single_text', 'format' => 'yyyy-MM-dd HH:mm', ])
        ;
    }

    // ...
}

因此, 在开始的5分钟内, 我不知道发生了什么, 以及我该怎么做才能避免出现此异常(除了更改”日期”字段的类型之外)。一段时间后, 我开始阅读Symfony 5的FormTypes文档, 并很快意识到了这一错误。

由于我的DateType小部件使用single_text小部件, 因此当渲染器尝试生成字段的HTML时, 如果字段的类型为single_text且html5选项为, 则我稍后可以在前端初始化基于JavaScript的Datepicker。启用(始终自动设置为true), 将引发异常。

要在FormType中解决此问题, 只需禁用html5属性, 如下所示:

$builder
    ->add('datePublished', DateType::class, [
        // 1. Keep your single_text widget
        'widget'=>'single_text', 'format' => 'yyyy-MM-dd HH:mm', // 2. Disable HTML5 option
        'html5' => false
    ])
;

例如:

<?php

namespace App\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

// Importing DateType
use Symfony\Component\Form\Extension\Core\Type\DateType; 

class TemplatesType extends AbstractType
{
    // ... 

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('datePublished', DateType::class, [
                'widget'=>'single_text', 'format' => 'yyyy-MM-dd HH:mm', // Solution to the exception
                'html5' => false
            ])
        ;
    }

    // ...
}

这样, 你现在应该可以在浏览器上看到你的视图, 而不会出现此异常。

编码愉快❤️!

赞(0)
未经允许不得转载:srcmini » 如何解决Symfony 5异常:启用”html5″选项后,无法使用”Symfony\Component\Form\Extension\Core\Type\DateType”的”format”选项

评论 抢沙发

评论前必须登录!