Как я могу переопределить файл ветки HWIOAuthBundle

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

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

Мой login.html.twig

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

База 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>

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


person Sid    schedule 08.01.2014    source источник


Ответы (2)


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

app / Resources / HWIOAuthBundle / views / 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 %}

app / Resources / 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.

person Alain Tiemblo    schedule 25.07.2015

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

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

Док:

person Fabien MEYNARD    schedule 08.01.2014
comment
Спасибо, но я уже унаследовал пользовательский пакет и шаблон fos. Итак, как я могу унаследовать друг друга? - person Sid; 08.01.2014
comment
Воспользуйтесь вторым способом;) - person Fabien MEYNARD; 09.01.2014
comment
Спасибо, я расширяю контроллер, а затем отменяю файл ветки. Тогда это работает согласно мне. - person Sid; 10.01.2014