Symfony KNPLAB/DoctrineBehaviors可翻译-currentLocale=null

Symfony KNPLAB/DoctrineBehaviors可翻译-currentLocale=null,symfony,doctrine,behavior,Symfony,Doctrine,Behavior,在实体中使用trait\Knp\DoctrineBehaviors\Model\translateable\Translation,我发现属性currentLocale从未设置过,因此我们总是在对$this->translate()的所有调用中获得默认语言环境('en') 如果我更改这个getDefaultLocale,所有的翻译都是正确的,所以我认为回退没有问题 我试着调试这个程序。我看到,如果我在currentLocaleCallable的构造函数中放置一个“var_dump($this->

在实体中使用trait
\Knp\DoctrineBehaviors\Model\translateable\Translation
,我发现属性currentLocale从未设置过,因此我们总是在对
$this->translate()的所有调用中获得默认语言环境('en')

如果我更改这个
getDefaultLocale
,所有的翻译都是正确的,所以我认为回退没有问题

我试着调试这个程序。我看到,如果我在currentLocaleCallable的构造函数中放置一个“var_dump($this->container->get('request'));”,则请求的区域设置为null。请求外部有正确的区域设置。似乎容器不在范围内:request,我不知道如何使它工作

我在github上发布了一个问题

编辑

该服务在vendor/knplabs/doctrine behaviors/config/orm-services.yml中定义,是:

knp.doctrine_behaviors.reflection.class_analyzer:
    class:   "%knp.doctrine_behaviors.reflection.class_analyzer.class%"
    public:  false

knp.doctrine_behaviors.translatable_listener:
    class:   "%knp.doctrine_behaviors.translatable_listener.class%"
    public:  false
    arguments:
        - "@knp.doctrine_behaviors.reflection.class_analyzer"
        - "%knp.doctrine_behaviors.reflection.is_recursive%"
        - "@knp.doctrine_behaviors.translatable_listener.current_locale_callable"
    tags:
        - { name: doctrine.event_subscriber }

knp.doctrine_behaviors.translatable_listener.current_locale_callable:
    class:           "%knp.doctrine_behaviors.translatable_listener.current_locale_callable.class%"
    arguments:
        - "@service_container" # lazy request resolution
    public:  false
编辑2:My composer.json

    "php": ">=5.3.3",
    "symfony/symfony": "2.3.*",
    "doctrine/orm": ">=2.2.3,<2.4-dev",
    "doctrine/doctrine-bundle": "1.2.*",
    "twig/extensions": "1.0.*",
    "symfony/assetic-bundle": "2.3.*",
    "symfony/swiftmailer-bundle": "2.3.*",
    "symfony/monolog-bundle": "2.3.*",
    "sensio/distribution-bundle": "2.3.*",
    "sensio/framework-extra-bundle": "2.3.*",
    "sensio/generator-bundle": "2.3.*",
    "incenteev/composer-parameter-handler": "~2.0",        
    "friendsofsymfony/user-bundle": "1.3.*",
    "avalanche123/imagine-bundle": "v2.1",
    "raulfraile/ladybug-bundle": "~1.0",
    "genemu/form-bundle": "2.2.*",
    "friendsofsymfony/rest-bundle": "0.12.0",
    "stof/doctrine-extensions-bundle": "dev-master",
    "sonata-project/admin-bundle": "dev-master",
    "a2lix/translation-form-bundle": "1.*@dev",
    "sonata-project/user-bundle": "dev-master",
    "psliwa/pdf-bundle": "dev-master",
    "jms/serializer-bundle": "dev-master",
    "jms/di-extra-bundle": "dev-master",
    "knplabs/doctrine-behaviors": "dev-master",
    "sonata-project/doctrine-orm-admin-bundle": "dev-master",
    "knplabs/knp-paginator-bundle": "dev-master",
    "friendsofsymfony/jsrouting-bundle": "~1.1",
    "zendframework/zend-validator": ">=2.0.0-rc2",
    "zendframework/zend-barcode": ">=2.0.0-rc2"
“php”:“>=5.3.3”,
“symfony/symfony”:“2.3.*”,
“条令/orm”:“>=2.2.3,=2.0.0-rc2”,
“zendframework/zend条形码”:“>=2.0.0-rc2”

能否将currentLocaleCallable类的服务定义添加到问题中?好的,我只是想知道您是否包含了提供的服务定义和参数:)您使用的是哪个版本的symfony2(
app/console--version
)和哪个PHP版本(
PHP-v
)?是,包括所有服务定义及其参数,该文件与捆绑包提供的文件相同。我的symfony版本是2.3.6,PHP版本是5.4.12,在symfony 2.3.2中有相同的项目。这个监听器工作正常,但是在作曲家更新它之后崩溃了。这听起来很奇怪-你能提供你的
composer.json