Symfony / Form:函数DoctrineType::__ construct()的参数太少 - php

我有一个奇怪的错误。我在自己的系统中实现了Form组件。我在那里创建了一个FormType,在其中我将EntityType用于字段。每当我想使用formBuilder创建表单时,都会引发以下错误:

Fatal error: Uncaught ArgumentCountError: Too few arguments to function 
Symfony\Bridge\Doctrine\Form\Type\DoctrineType::__construct(), 0 passed in 
vendor/symfony/form/FormRegistry.php on line 92 and exactly 1 expected in 
vendor/symfony/doctrine-bridge/Form/Type/DoctrineType.php:102

这里有人知道为什么会这样吗?

附加信息:

作曲家的软件包版本:

abraham/twitteroauth          0.7.4
doctrine/annotations          v1.6.0
doctrine/cache                v1.7.1
doctrine/collections          v1.5.0
doctrine/common               v2.8.1
doctrine/dbal                 v2.6.3
doctrine/inflector            v1.3.0
doctrine/instantiator         1.1.0
doctrine/lexer                v1.0.1
doctrine/orm                  v2.6.1
monolog/monolog               1.23.0
php-curl-class/php-curl-class 8.0.1
phpmailer/phpmailer           v6.0.3
psr/cache                     1.0.1
psr/log                       1.0.2
psr/simple-cache              1.0.0
setasign/fpdf                 1.8.1
symfony/cache                 v4.0.5
symfony/console               v4.0.5
symfony/doctrine-bridge       v4.0.5
symfony/event-dispatcher      v4.0.5
symfony/filesystem            v4.0.5
symfony/form                  v4.0.5
symfony/http-foundation       v4.0.5
symfony/inflector             v4.0.5
symfony/intl                  v4.0.5
symfony/options-resolver      v4.0.5
symfony/polyfill-intl-icu     v1.7.0
symfony/polyfill-mbstring     v1.7.0
symfony/polyfill-php72        v1.7.0
symfony/process               v4.0.5
symfony/property-access       v4.0.5
symfony/security-core         v4.0.5
symfony/security-csrf         v4.0.5
symfony/translation           v4.0.5
symfony/twig-bridge           v4.0.5
symfony/validator             v4.0.5 
symfony/var-dumper            v4.0.5
symfony/yaml                  v4.0.5
twig/extensions               v1.5.1
twig/twig                     v2.4.6

表格类型:

public function buildForm( FormBuilderInterface $builder, array $options )
{
    $builder
        ->add( 'name', TextType::class )
        ->add( 'image', TextType::class )
        ->add( 'typeId', IntegerType::class )
        ->add( 'customFields', EntityType::class, [
            'class' => TypeDefinition::class,
            'choice_label' => 'name',
            'multiple' => true
        ] )
        ->add( 'isEnabled', CheckboxType::class )
        ->add( 'count', IntegerType::class );
}

如果您需要更多信息,请在下面告诉我:)

参考方案

我终于找到了解决我问题的答案:
不可能在SymfonyFramework上下文之外使用EntityType类。

原因是EntityType::class需要多个组件才能由Symfony的FormBuilder解析。当然,您需要教义和Symfony的学说桥梁。但是,为了从EntityType::class解析最终实体,DoctrineType:class需要传递ManagerRegistry::class。使用ManagerRegistry可以从Symfony应用程序中解析主义连接。

因此,一种可能性是将带有配置的实体管理器或已解析的实体传递给FormType并创建具有ChoiceType::class类型的字段。

我希望这对某些人有帮助...

Symfony 2:如何通过路由名称获取默认路由? - php

是否可以通过名称检索有关某条路线的信息,或获取所有路线的列表?我需要能够获取任意路径的_controller中的defaults值,而不仅仅是当前路径。这有可能吗?P.S .:我发现我可以找到使用YAML的路由,但是重新解析似乎是不必要且繁重的。 参考方案 我真的很擅长回答自己的问题。要获取路由,请在路由器上(控制器内的getRouteCollection(…

原则实体管理器和多线程更新数据库 - php

我目前有一个XHR请求,可以从客户端启动N次。该请求由服务器处理,每个请求通常在数据库中创建一个新行(所有原则/ xml)。在我对对象进行persist()之前,请确保是否具有唯一的文件名(我正在上传资产),并且通过重写persist(),调用我的getUniqueFilename()然后调用parent :: persist来做到这一点。当我执行多个带有相…

在Symfony中键入提示json对象 - php

在我的Symfony 2.3项目中,我有一个curl函数,该函数从API接收JSON数据,并将该数据作为参数传递给另一个函数。当前,接受JSON对象的函数如下所示:public function updateCountries($data) { foreach (json_decode($data, true) as $key => $value) {…

Sonata管理员捆绑包-configureFormFields中的不同字段选项 - php

是否可以根据正在创建新实体还是在configureFormFields中编辑现有实体的方式将不同的字段添加到Sonata Admin Bundle表单中? 参考方案 这是官方文档(Click here)建议女巫的一种更好方法$subject = $this->getSubject(); if ($subject->isNew()) { $form…

在会话Symfony 2中存储对象 - php

我正在用Symfony 2编写一个小的电子商店应用程序,我需要某种方式在会话中存储用户的购物车。我认为使用数据库不是一个好主意。该应用程序将使用诸如“产品”,“类别”,“ ShoppingCart”之类的实体,其中“产品”和“类别”被持久化到数据库中,并且用户将在其ShoppingCart中选择产品。我发现了NativeSessionStorage类,该类应…