Forms Autowire没有';它似乎在工作

Forms Autowire没有';它似乎在工作,forms,symfony,symfony-3.4,Forms,Symfony,Symfony 3.4,[问题] 我使用的是Symfony 3.4,现在处理服务的方式有些问题。即使它起作用了,我还是不得不用老办法,这是个问题 我正在表单上使用,但由于某些原因,我出现以下错误 类型错误:传递给AppBundle\Form\VarianteScalierOptgc\VarianteScalierOptgCeditPoteauType::\uu构造()必须是AppBundle\Form\DataTransformer\VarianteScalierTransformer的实例,未给出任何实例 如文件所述

[问题]

我使用的是Symfony 3.4,现在处理服务的方式有些问题。即使它起作用了,我还是不得不用老办法,这是个问题

我正在表单上使用,但由于某些原因,我出现以下错误

类型错误:传递给AppBundle\Form\VarianteScalierOptgc\VarianteScalierOptgCeditPoteauType::\uu构造()必须是AppBundle\Form\DataTransformer\VarianteScalierTransformer的实例,未给出任何实例

如文件所述:

就这样!只要您使用autowire和autoconfigure,Symfony就会自动知道向TaskType传递IssueTumberTransformer的实例

这是我的情况,但仍然有错误

另外,如果有人能提示我如何正确更新下面的服务,那就太好了

[文件]

FormType

Transformer.php

services.yml


您缺少服务发现部分,因此在
\u default
之后您就忘记了这一点

_defaults:
  ...

  App\: #You might need to change this to the correct namespace
    resource: '../src/*'

看一看

谢谢。我现在明白了为什么我不能使用我应该使用的服务。我遇到另一个错误,我的函数
transform()
有以下错误:
调用整数上的成员函数getId()。有主意了吗?Nvm,找到原因了。。。我在表单生成器中使用了
getId()
,但我不应该这样做。
class VarianteEscalierTransformer implements DataTransformerInterface {
    private $em;

    /**
     * @param EntityManagerInterface $em
     */
    public function __construct(EntityManagerInterface $em) {
        $this->em=$em;
    }

    /**
     * @param  Object|null $entity
     * @return string
     */
    public function transform($entity) {
        if(null === $entity) {
            return "";
        }

        return $entity->getId();
    }

    /**
     * @param $entityId
     * @return VarianteEscalier|null
     */
    public function reverseTransform($entityId) {
        if(!$entityId) {
            return null;
        }
        $entity=$this->em->getRepository(VarianteEscalier::class)->findOneBy(array('id'=>$entityId));
        if($entity === null) {
            throw new TransformationFailedException(sprintf('VarianteEScalier avec l\'id '.$entityId.' n\'existe pas!'));
        }

        /** @noinspection PhpIncompatibleReturnTypeInspection */
        return $entity;
    }
}
services:
    _defaults:
        autowire: true
        autoconfigure: true
        public: false
    listener.projet:
        class: AppBundle\Listener\ProjetListener
        arguments: ['@security.token_storage']
        tags:
            - { name: doctrine.orm.entity_listener, lazy: true }
    listener.variante:
        class: AppBundle\Listener\VarianteListener
        tags:
            - { name: doctrine.orm.entity_listener, lazy: true }
    service.upload:
        public: true
        class: AppBundle\Service\UploadService
        arguments:
            $dirPicto: '%dir_picto%'
_defaults:
  ...

  App\: #You might need to change this to the correct namespace
    resource: '../src/*'