相关疑难解决方法(0)

Symfony2登录事件侦听器和security.interactive_login事件从未使用FOSUser触发

我正在尝试添加一个Symfony2登录事件监听器,目标是在每个请求上记录用户时设置数据库存储的语言环境,并回退到没有用户登录的默认语言环境.我使用FOSUserBundle,我试图让security.interactive_login事件起作用.我在互联网上找到了很多像这样的代码:http://dev.dbl-a.com/symfony-2-0/how-to-add-a-symfony2-login-event-listener/

我有自己的FOSUserBundle子包和services.yml中的这个实现:

my_user.security.interactive_login_listener:
        class: My\UserBundle\EventListener\UserListener
        arguments: [@security.context, @doctrine]
        tags:
            - { name: kernel.event_listener, event: security.interactive_login, method: setLocaleForAuthenticatedUser }

my_user.security.kernel_request_listener:
        class: My\UserBundle\EventListener\UserListener
        arguments: [@security.context, @doctrine]
        tags:
            - { name: kernel.event_listener, event: kernel.request, method: setLocaleForUnauthenticatedUser }
Run Code Online (Sandbox Code Playgroud)

问题是,即使在记录时,也永远不会触发security.interactive_login事件.相反,我的setLocaleForUnauthenticatedUser总是被触发.我找到的每个代码示例似乎都很流畅,我的应用程序出了什么问题?

security events login symfony fosuserbundle

7
推荐指数
1
解决办法
1万
查看次数

在Symfony 2.1中设置语言环境

我想在我的symfony 2.1网站上安装一个语言切换器.

我按照官方文档,设置了翻译文件,但使用$ request-> setLocale('en_US')设置了语言环境; 似乎不起作用.经过一些研究,我发现这个问题提供了这种听众技术的答案的开始.

但是,我仍然无法让它工作,我不太确定我的听众声明,它有什么问题吗?

我的控制器:

public function englishAction(Request $request)
{
    $this->get('session')->set('_locale', 'en_US');
    return $this->redirect($request->headers->get('referer'));
}
Run Code Online (Sandbox Code Playgroud)

config.yml中的服务声明:

services:
    my_listener:
        class:        "FK\MyWebsiteBundle\Listener\LocaleListener"
Run Code Online (Sandbox Code Playgroud)

我的路由:

homepage:
    pattern:  /{_locale}
    defaults: { _controller: FKMyWebsiteBundle:Default:index, _locale: en }
    requirements:
        _locale: en|fr|cn
about:
    pattern:  /{_locale}/about
    defaults: { _controller: FKMyWebsiteBundle:Default:about, _locale: en }
    requirements:
        _locale: en|fr|cn
Run Code Online (Sandbox Code Playgroud)

php locale symfony symfony-2.1

6
推荐指数
1
解决办法
7756
查看次数

标签 统计

symfony ×2

events ×1

fosuserbundle ×1

locale ×1

login ×1

php ×1

security ×1

symfony-2.1 ×1