2017-08-04 4 views
-1

Depuis hier, je n'arrive pas à comprendre pourquoi j'ai cette erreur sur mon site Web Symfony. J'ai un service qui dépend des autres. Lorsque j'essaie d'utiliser et d'injecter le gestionnaire d'entité de la doctrine Symfony, j'ai des erreurs. Je ne peux pas trouver un moyen de le faire :(Symfony 2: les dépendances des services ont échoué

Ma config:

mycompany_jobs_bundle.processor.crm.product_matrix: 
    class: %mycompany_jobs_bundle.processor.crm.product_matrix.class% 
    parent: pim_base_connector.processor.product_to_flat_array 
    arguments: 
     - '@pim_catalog.repository.attribute' 
     - '@pim_catalog.localization.factory.date' 
     - '@doctrine.orm.default_entity_manager' 

(J'ai aussi essayé 'doctrine.orm.entity_manager' au lieu de '@ doctrine.orm.default_entity_manager' -> mêmes résultats)

Puis, dans mon service:

  • ajouter une "utiliser Doctrine \ ORM \ EntityManager," avec le othe r "utiliser" les lignes.
  • Et ceci est mon constructeur:

enter image description here

... mais je cette erreur:

Catchable Fatal Error: Argument 8 passed to Mycompany\Bundle\JobsBundle\Processor\Mycompany\ProductWordMatrixProcessor::__construct() must implement interface Pim\Component\Catalog\Repository\AttributeRepositoryInterface, instance of Doctrine\ORM\EntityManager given

Où je déplace ma ligne "EntityManager $ em" j'ai erreur avec position des arguments. Qu'est-ce qui ne va pas ? Je ne comprends pas ..

Merci pour votre aide

Edit: ci-dessous la configuration YML du service parent, pim_base_connector.processor.product_to_flat_array:

pim_base_connector.processor.product_to_flat_array: 
    class: %pim_base_connector.processor.product_to_flat_array.class% 
    arguments: 
     - '@pim_serializer' 
     - '@pim_catalog.manager.channel' 
     - '@pim_catalog.builder.product' 
     - ['pim_catalog_file', 'pim_catalog_image'] 
     - %pim_catalog.localization.decimal_separators% 
     - %pim_catalog.localization.date_formats% 
     - '@akeneo_storage_utils.doctrine.object_detacher' 
+1

pouvez-vous également publier la définition du service parent? – Matteo

Répondre

1

Essayez de déplacer le EntityManaer comme le dernier paramètre de vos arguments de constructeur comme ceci:

public function __construct() 
{ 
    //.. others 
    AttributeRepositoryInterface $attributeRepository, 
    EntityManager $em 
} 

Vous devez maintenir l'ordre de vos dépendances déclarées dans la configuration

+0

Je reçois la même erreur (oui, j'ai effacé le cache pour essayer) – Paolito75

+2

@ Paolito75 Encore une fois, mettez à jour votre question avec le code actuel. Votre question (et erreur) indique que le em est passé comme le 8ème argument mais votre classe s'attend à être dans la 10ème position. Et en passant, avoir 10 arguments constructeurs suggère fortement que votre classe en fait trop. – Cerad

0

Vous constructeur a 10 arguments et tous doivent être configurés. Vous avez spécifié seulement 7. Vous devez également spécifier les 3 derniers et vérifier la commande. C'est important.