2014-01-08 3 views
3

Я новичок в HWIOAuthBundle с Symfony2.3 + FosUserBundle. Я использую этот комплект для facebook, twitter, googleplus login в моем проекте.Как переопределить файл Twig HWIOAuthBundle

Я успешно установил этот и этот рабочий режим. Но я хочу переопределить login.html.twig, потому что хочу показать facebook, twitter, google plus Images в нашем файле twig, но я не знаю, как это сделать в HWIOAuthBundle.

Мой login.html.twig

{% block content %} 
    {# Bonus: Show all available login link in HWIOAuthBundle #} 
    {% render(controller('HWIOAuthBundle:Connect:connect')) %} 
{% endblock %} 

Base HWIOAuthBundle login.html.twig

{% extends 'HWIOAuthBundle::layout.html.twig' %} 

{% block hwi_oauth_content %} 
{% if error %} 
    <span>{{ error }}</span> 
{% endif %} 
{% for owner in hwi_oauth_resource_owners() %} 
<a href="{{ hwi_oauth_login_url(owner) }}">{{ owner | trans({}, 'HWIOAuthBundle') }}</a>  <br /> 
{% endfor %} 
{% endblock hwi_oauth_content %} 

Который один показ этого типа в формате HTML страницы:

Facebook 
Google Plus 
Twitter 

это шоу по умолчанию при нажатии любой из них, а затем перенаправляется на его страницу (Facebook, Twitter, Google Plus).

Но И я хочу показать этот тип HTML:

<!-- socials --> 
     <ul class="top-socials"> 
      <li><a class="facebook" href="#">Facebook</a></li> 
      <li><a class="twitter" href="#">Twitter</a></li> 
      <li><a class="google-plus" href="#">Google+</a></li> 
     </ul> 

Как я могу это сделать?

ответ

3

У вас есть два решения для этого:

  1. Используйте расслоение наследование и уточнить шаблон с родительским путем
  2. Объявите шаблон в вас приложении/Ressources/как то: приложение/RESSOURCES/AcmeBundle/Каталог/template.html.twig (где /AcmeBundle/Directory/template.html.twig является точно таким же путем к шаблону в поставщике)

Doc:

+0

Спасибо, но я уже наследую fos user bundle и template Так как я могу наследовать другой? – Sid

+0

Использовать второй способ;) –

+0

Спасибо, я расширяю контроллер, а затем переопределяю файл twig.then, это работает по мне. – Sid

4

Чтобы быть более конкретную информацию о вашем случае, вы должны создать 2 новых просмотров:

приложение/Ресурсы/HWIOAuthBundle/просмотров/layout.html.twig:

{# extends your own base template #} 
{% extends 'MyBundle::layout.html.twig' %} 

{% block title %}{{ 'Login' | trans }}{% endblock %} 

{% block body %} 
    {% block hwi_oauth_content %} 
    {% endblock hwi_oauth_content %} 
{% endblock %} 

Приложение/Ресурсы/HWIOAuthBundle/views/Connect/login.html.twig:

{% extends 'HWIOAuthBundle::layout.html.twig' %} 

{% block hwi_oauth_content %} 

    {# Display oauth errors (here using Bootstrap) #} 
    {% if error is defined and error %} 
     <div class="row"> 
      <div class="col-md-12 alert alert-danger text-center"> 
       <span class="error">{{ error }}</span> 
      </div> 
     </div> 
    {% endif %} 

    {# HWIOAuthBundle integration #} 

    <ul class="top-social"> 
     <li><a class="#" href="{{ hwi_oauth_login_url('facebook') }}">Facebook</a></li> 
     <li><a class="#" href="{{ hwi_oauth_login_url('twitter') }}">Twitter</a></li> 
     <li><a class="#" href="{{ hwi_oauth_login_url('google') }}">Google+</a></li> 
    </ul> 

{% endblock hwi_oauth_content %} 

Не поддавайтесь искушению поставить эту страницу входа в первом файле, поскольку OAUthBundle использует несколько другие представления (подтвердить профиль и т.д.).

Этот пример взято из проекта symfony-quickstart.

Смежные вопросы