这是我今天目睹的一些奇怪行为,我想知道为什么......我会直言不讳:
所以我们使用symfony和fos elasticabundle
进行a2lix翻译class Class
{
use Translatable;
}
class ClassTranslation implements \A2lix\I18nDoctrineBundle\Doctrine\Interfaces\OneLocaleInterface
{
use Translation;
}
在这种情况下,一旦我运行
php app / console fos:elastica:populate
我得到了:
[InvalidArgumentException]参数' locale'才不是 存在。
但参数实际上是在特征中(来自供应商,包括2个特征可翻译方法和可翻译属性)
问题是为什么会发生这种情况。我们拥有该特性的属性,但是一旦我们运行命令它就找不到它。
好的,现在这里有一个奇怪的部分!
在这种情况下,一切都按预期工作:
class Class
{
use Translatable;
}
class ClassTranslation
{
use Translation;
}
如果我决定不实现接口,那么命令运行顺畅,接口只会强制你为locale属性设置getter和setter。我只是想知道为什么会这样。
答案 0 :(得分:1)
这可能与https://github.com/a2lix/I18nDoctrineBundle/issues/16有关。
我不认为这与php特征有关,因为不存在InvalidArgumentException。如果接口不存在,可能不会执行特征代码,因此在这种情况下没有错误。请检查特征的实现,可能会执行一些调试输出以查看代码执行的时间以及何时执行。