我有以下代码:
$repo = $this->get('doctrine.orm.default_entity_manager')
->getRepository('Acme:Foo');
对于记录,代码工作正常,因为我可以使用$repo
,它的方法和生成的实体没有问题。
然而,PhpStorm会突出显示'doctrine.orm.default_entity_manager'
字符串并给出以下错误:
缺少服务
在引用该特定服务时,我的服务文件中出现相同的错误。在此之后,显然,自动完成功能不起作用。我当然可以使用以下解决方法:
/** @var \Doctrine\ORM\EntityManager $em */
$em = $this->get('doctrine.orm.default_entity_manager');
$em->getRepository('Acme:Foo');
这样我仍会收到警告,但自动完成功能正常。但是,我宁愿尽可能地保持我的代码清除这种注释,而且我几乎可以肯定有一个简单的解决方法。我当然多次清除缓存。
我该如何解决这个问题?
编辑:我需要提一下我正在使用Symfony2插件。
答案 0 :(得分:4)
在PhpStorm中,我不小心将目录“var”标记为“Excluded”
所以我的“修复”很简单:
右键单击目录,“将目录标记为” - > “取消排除”
答案 1 :(得分:2)
使用最新稳定的PHPStorm和Symfony插件,我遇到了一些服务问题,因为我的var/cache/
位于我的流浪盒中/dev/shm
(而PHPStorm正在Windows上运行)。
当我拥有所有文件var/cache
时,它应该运行良好。
我认为需要生成var/cache/dev/appDevDebugProjectContainer.xml
,最新且可访问。
答案 2 :(得分:0)
我们采取了以下措施来避免像您一样的问题:
在 services.yml 中,我定义了:
entity_manager:
alias: doctrine.orm.entity_manager
问题是很明显,Symfony 2插件并不能识别某些标准。通常可用的服务。
现在使用
$this->get('entity_manager');
并未显示已激活的Symfony 2插件的任何问题。
我们对其他' (如Logger,Mailer等)使用非常类似的方法。
答案 3 :(得分:0)