当我尝试生成实体或更新架构时;
[学说\共同\注解\ AnnotationException]
[语义错误]从未导入类Gedmo \ Translatable \ Entity \ Translation中的注释“@index”。您是否忘记为此注释添加“使用”语句?
有什么问题?
我试过了;
更多信息:
我现在不使用gedmo翻译。它已安装但未使用!
我没有使用翻译注释。
将symfony2.4更新为2.6后发生这种情况。
答案 0 :(得分:6)
不幸的是,Gedmo\Translatable\Entity\Translation
的类doc-block包含注释@index
(而不是@Index
,有一个大写" I")。这可能会导致区分大小写的文件系统出现问题。
这已在提交1926773: Removed unused use statements and added a missing one中修复,但尚未标记/发布。
因为您升级了Symfony,所以您可能还升级了Doctrine。我不确定发生了哪种版本的Doctrine,但过去遗漏的注释只是被忽略了。如今抛出异常。这可能是您在升级后遇到此问题的原因。
一种解决方案是忽略@index
(小写" i")注释:
AnnotationReader::addGlobalIgnoredName('index');
文档:2.2.3. Ignoring missing exceptions
或者完全禁用导入验证机制:
$reader = new \Doctrine\Common\Annotations\AnnotationReader();
$reader->setEnabledPhpImports(false);
请注意,在将来的Doctrine版本中将删除最后一个功能。
即使您没有使用可翻译扩展程序,也可能启用了映射。 否则,课程将无法加载,错误也不会发生。
在app/config/config.yml
:
doctrine:
orm:
entity_managers:
default:
mappings:
gedmo_translatable:
type: annotation
prefix: Gedmo\Translatable\Entity
dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translatable/Entity"
alias: GedmoTranslatable
is_bundle: false
gedmo_translator:
type: annotation
prefix: Gedmo\Translator\Entity
dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translator/Entity"
alias: GedmoTranslator
is_bundle: false
您应仅包含您实际使用的扩展程序的映射。
将gedmo/doctrine-extensions
中composer.json
的要求更改为至少1926773.您还可以要求维护者发布包含错误修复的新版本。
答案 1 :(得分:3)
尝试在翻译实体的顶部添加use Doctrine\ORM\Mapping\Index;
。