Injection de service

Par Noham C., il y a 3 ans


Bonjour à tous,

J'ai créer un service "ServiceDocuware" que j'ai déclarer dans mon services.yaml:

** services.yaml: ** App\Service\ServiceDocuware:

mais quand je souhaite l'injecter dans le contructeur de mon AbstractFieldType

namespace App\Form\Type\Listes; use App\Service\ServiceDocuware; use Symfony\Component\Form\AbstractType; class AbstractFildType extends AbstractType { public function __construct( private ServiceDocuware $docuware ) { } }

Ce que j'obtiens

J'obtiens l'erreur suivante :

Too few arguments to function App\Form\Type\Listes\AbstractFildType::__construct(), 0 passed in \vendor\symfony\form\FormRegistry.php on line 78 and exactly 1 expected

Je vous remercie

4 réponses

quenti77, il y a 3 ans

Hello,

Question conne avant de continuer : As-tu clear le cache ? (ça peut arriver qu'il ne le fasse pas)

Noham C., il y a 3 ans

Oui j'ai fait un

composer cc

Je n'ai ce souci que dans les AbstractType :(

Noham C., il y a 3 ans

Même quand je passe des repositroy ca me donne le meme message:

public function __construct( private readonly ModuleDocuwarePGRepository $docuwareParamRepository, private readonly SettingsParametresRepository $settingsParametresRepository, ) { }
Noham C., il y a 3 ans

Je pense avoir compris et trouver la solution, il n'est donc pas possible d'injecter quoi que ce soit dans un FORMTYPE, il faut le déclarer dans service.yaml et la ca fonctionne.

Un exemple :

App\Form\Type\FieldsValidatorType: arguments: ['@doctrine.orm.entity_manager'] tags: [form.type]

et dans mon FORMTYPE je peux donc maintenant injecter

private $entityManager; public function __construct(EntityManagerInterface $entityManager) { $this->entityManager = $entityManager; }