2016-12-15 28 views
0

當我打開PhpStorm中聲明。與Symfony Plugin啓用,這是能夠解決所有的服務,我可以按Ctrl +點擊去服務定義,除了doctrine.orm.entity_managerPhpStorm無法解決符號「doctrine.orm.entity_manager」

它說無法解析符號 'doctrine.orm.entity_manager'

這裏是services.xml文件

<?xml version="1.0" ?> 
<container xmlns="http://symfony.com/schema/dic/services" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"> 
    <services> 
     <service id="example_manager" class="Vendor\XysBundle\Manager\ExampleManager"> 
      <argument type="service" id="doctrine.orm.entity_manager" /> 
     </service> 
    </services> 
</container> 

PhpStorm詳情:

PhpStorm 2016.3.1 
Build #PS-163.9735.1, built on December 6, 2016 
JRE: 1.8.0_112-release-408-b2 amd64 
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o 

appDevDebugProjectContainer.xml文件存在於應用/緩存目錄。

我怎樣才能得到這個工作?

+0

這必須是用的Symfony插件的問題,因爲它是提供這樣的導航/分辨率的一個 - PhpStorm只是使用這個您執行「Ctrl + Click」操作時的信息。嘗試檢查插件問題跟蹤器中的現有問題:https://github.com/Haehnchen/idea-php-symfony2-plugin/issues?utf8=%E2%9C%93&q=is%3Aissue%20doctrine.orm.entity_manager%20 – LazyOne

回答

0

我有同樣的問題。如果你打開其中的教義服務定義vendor\doctrine\doctrine-bundle\Resources\config\orm.xml文件,你可以看到,有一個id爲「doctrine.orm.entity_manager」,但沒有服務只是「doctrine.orm.entity_manager.abstract

的定義是這樣的:

<service id="doctrine.orm.entity_manager.abstract" class="%doctrine.orm.entity_manager.class%" abstract="true" /> 

正如你可以看到抽象屬性設置爲true。這意味着此服務可以充當其他服務的父項,並且當您使用此抽象父項定義子項服務時,您不必定義方法調用或注入構造函數的參數,例如,這些定義將從父母。

如果調查深一點,你會發現,%doctrine.orm.entity_manager.class%在同一個文件中,要學說實體管理中心實際上引用參數定義:

<parameter key="doctrine.orm.entity_manager.class">Doctrine\ORM\EntityManager</parameter> 

所以我想我們應該用doctrine.orm.entity_manager.abstract,但是doctrine.orm.entity_manager也是公認的,儘管我不知道如何。

對於抽象服務的定義進一步解釋看看這個Symfony的文檔頁面:https://symfony.com/doc/current/service_container/parent_services.html