2

これは私が今日目撃したいくつかの奇妙な動作であり、その理由が気になります..

そのため、symfony と fos elasticabundle で a2lix 翻訳を使用しています。

class Class
{
    use Translatable;

}

class ClassTranslation  implements \A2lix\I18nDoctrineBundle\Doctrine\Interfaces\OneLocaleInterface
{
    use Translation;

}

このシナリオでは、一度実行すると

php アプリ/コンソール fos:elastica:populate

私は得ています:

[InvalidArgumentException] パラメータ 'locale' が存在しません。

しかし、パラメーターは実際には特性にあります (2 つの特性の翻訳可能なメソッドと翻訳可能なプロパティを含むベンダーから)

問題は、なぜこれが起こるのかです。特性からのプロパティがありますが、コマンドを実行すると、それが見つかりません。

さて、ここで奇妙な部分が来ます!

このシナリオでは、すべてが期待どおりに機能します。

class Class
{
    use Translatable;

}

class ClassTranslation 
{
    use Translation;

}

コマンドがスムーズに実行されるインターフェースを実装しないことにした場合、インターフェースはロケール属性のゲッターとセッターを強制するだけです。なぜこれが起こるのだろうか。

4

1 に答える 1

1

これはhttps://github.com/a2lix/I18nDoctrineBundle/issues/16に関連している可能性があります。

InvalidArgumentException が発生しないため、これは php の特性に関連しているとは思いません。インターフェイスが存在しない場合、トレイトのコードが実行されない可能性があるため、この場合はエラーにはなりません。トレイトの実装を確認してください。デバッグ出力を行って、コードがいつ実行され、いつ例外が発生したかを確認してください。

于 2016-10-10T09:56:45.890 に答える