Выход из FOSUserBundle с префиксом не работает

У меня очень странная проблема с symfony2 и FOSUserBundle.

Я могу выйти с помощью / en / logout, но не с помощью / nl / logout или / fr / logout.

Когда я пытаюсь выйти с помощью nl или fr, я получаю:

You must activate the logout in your security firewall configuration.

Хотя я это настроил. Я могу'Кажется, я не понимаю, почему работает / en / logout, а остальное - нетт.

Это мой код:

security.yml
security:
providers:
    fos_userbundle:
        id: fos_user.user_provider.username_email

encoders:
    FOS\UserBundle\Model\UserInterface: sha512

firewalls:
    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
            csrf_provider: form.csrf_provider
            check_path: fos_user_security_check
            default_target_path: /%locale%/login
            always_use_default_target_path: true
            failure_path:   /%locale%/login
        logout:
            path: /%locale%/logout
            target: homepage
        anonymous:    true
routing.yml
user bundle > FOS
    fos_user_security:
        resource: "@FOSUserBundle/Resources/config/routing/security.xml"
        prefix: /{_locale}
        requirements:
            _locale: fr|nl|en
контроллер
    class LoginController extends Controller {

    /**
     * @Route("{_locale}/logout-test", name="logout", defaults={"_locale"="en"} , requirements = {"_locale" = "fr|en|nl"})
     * @Template()
     */
    public function logoutAction()
    {
        $test = "";
        #throw new \RuntimeException('You must activate the logout in your security firewall configuration.');
        #return $this->redirect($this->generateUrl('homepage'));;
    }
}

Кто-нибудь может мне помочь или сказать, где искать дальше? Это будет высоко ценится

 P. R. Ribeiro18 февр. 2013 г., 18:49
Попробуйте определить выход из системы как путь: / logout $
 Nealv18 февр. 2013 г., 18:47
логин работает нормально, выход из системы вызывает проблемы
 P. R. Ribeiro18 февр. 2013 г., 18:46
Вы пытались определить default_target_path как / login, без локали?

Ответы на вопрос(2)

Решение Вопроса

URL. Если это начинается с "/" он будет рассматриваться как URL, иначе он будет рассматриваться как маршрут. Если вы используете маршруты вместо URL-адресов, локаль позаботится автоматически. Например, вот моя конфигурация security.yml:

security:
  public:
    pattern:   ^/
    form_login:
      login_path: fos_user_security_login
      check_path: fos_user_security_check
      provider: fos_userbundle
      csrf_provider: form.csrf_provider
      default_target_path: index
    anonymous: true
    logout:
      path: fos_user_security_logout
      target: index

в дополнение к @jfcartier 'ответ:

В случае, если вам нужен кастомlogout путь вместо:fos_user_security_logout

# app/config/security.yml
...
  logout:
     path: my_logout
     target: homepage

... тогда вам также нужно определить это в:routing.yml

# app/config/routing.yml
app:
    resource: "@AppBundle/Controller/"
    type:     annotation

my_logout:
    path: /logout

fos_user:
    resource: "@FOSUserBundle/Resources/config/routing/all.xml"

Хотя, убедитесь, что этоопределены ранееfos_user - иначе тыя получу ту же ошибку:Вы должны активировать выход из системы в конфигурации вашего брандмауэра.

Ваш ответ на вопрос