2017-08-04 69 views
-1

從昨天起,我無法理解爲什麼我在Symfony網站上有這個錯誤。 我有一項服務取決於他人。當我嘗試使用並注入Symfony教義實體管理器時,我有錯誤。我無法找到一個方法來做到這一點:(Symfony 2:服務依賴失敗

我的配置:

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' 

(我也試過 'doctrine.orm.entity_manager' 而不是 '@ doctrine.orm.default_entity_manager' - >同樣的結果)

然後,在我的服務:

  • 我添加了一個 「使用Doctrine \ ORM \ EntityManager的;」 與行吟詩人r「使用」線。
  • 這是我的構造函數:

enter image description here

...但我有此錯誤:

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

,無論我提出我行 「的EntityManager $ EM」 我有誤差參數位置。怎麼了 ?我不明白..

感謝您的幫助

編輯:父服務的YML配置如下,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

你可以發佈父服務的定義嗎? – Matteo

回答

1

嘗試移動EntityManaer作爲構造函數參數的最後一個參數,如下所示:

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

您需要保持你在配置中聲明的依賴關係

+0

我得到相同的錯誤(是的,我清除緩存brefore要嘗試) – Paolito75

+2

@ Paolito75再次,用實際的代碼更新你的問題。你的問題(和錯誤)表明他們正在被作爲第八個參數傳遞,但你的班級期望它在第十個位置。順便說一句,有10個構造函數參數強烈表明你的類正在做太多。 – Cerad

0

你的構造函數有10個參數,它們都應該被配置。您只指定了7.您還必須指定最後3並檢查訂單。這一點很重要。