2015-03-18 5 views
0

Я реализовал как FOSUserBundle, так и HWIOauthBundle в своем проекте Symfony 2. В принципе, все работает нормально, но я хотел бы настроить бит litle больше. Обычно я использую функцию connect функции HWIOauthBundle для подключения учетной записи oauth к пользователю, уже подключенному к форме аутентификации (FOSUserBundle).Symfony 2: HWiOauthBundle: переопределение connect_success.html.twig

В случае Succes действие контроллера HWIOAuthBundle: Подключение: connectService отображает шаблон веточка connect_success.html.twig. На данный момент, я хотел бы, чтобы переопределить этот шаблон и выполните следующие действия:

  1. Создать флэш сообщение
  2. дисплея вспышки сообщение на моей домашней странице

Вы можете получить такое поведение легко с FOSUserBundle, поскольку этот комплект отправляет множество событий для подключения к контроллерам. Но с HWIOauthBundle это невозможно.

Мое решение заключается в следующем:

1/я переопределить connect_success.html.twig, помещая один и тот же файл с именем в приложение/Ressources/HWIOauthBundle/просмотров/Connect со следующим кодом:

{{ render(controller('MyUserBundle:User:HWIOAuthFlash')) }} 

2/в моем контроллере пользователя (MyUserBundle: Пользователь), я создаю действие HWIOAuthFlashAction(), которая определяет мгновенное сообщение и направляет в действие контроллера, который отображает ситемы стартовой (MyMainBundle: Main: Домашняя)

public function HWIOAuthFlashAction() 
    { 
    // Here : flash message definition 

    return $this->forward('MyMainBundle:Main:homepage'); 
    } 

На данный момент на главной странице отображается с сообщением вспышки. Но мне пришлось удалить две ссылки на домашнем шаблоне (homepage.twig.html), что позволяет пользователю переключаться между двумя локалями.

Следующий код является тот, который я должен был удалить из моего шаблона:

<ul> 
    <li><a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'fr'})) }}">FR</a></li> 
    <li><a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'en'})) }}">EN</a></li> 
    </ul> 

Я понимаю, что это специальная переменная _route равна нулю. И я получаю следующее сообщение:

Исключение было брошено во время рендеринга шаблона ("Ошибка при визуализации „ххххх/веб/app_dev.php/Связь/сервис/Google ключ = YYYYYYY“ (Статус код 500) ") в HWIOAuthBundle:. Подключение: connect_success.html.twig на линии 3.

у меня есть два вопроса:

  1. Для достижения своей цели, действительно ли это хорошо w ай?
  2. Как сказать symfony, что я хочу, чтобы мой маршрут был homepage?
+0

Я думаю, что я могу проверить, если * _route * равен нулю , В этом случае я заставляю маршрут быть * домашним *. Чтобы судить. – Cruz

ответ

0

Как предложено в моем комментарии, вот мое решение:

В шаблоне домашней страницы homepage.twig.html:

{% set route = app.request.get('_route') ? app.request.get('_route') : 'homepage' %} 

     <ul> 
     <li><a href="{{ path(route, app.request.get('_route_params')|merge({'_locale': 'fr'})) }}">FR</a></li> 
     <li><a href="{{ path(route, app.request.get('_route_params')|merge({'_locale': 'en'})) }}">EN</a></li> 
     </ul>