2014-01-08 101 views
3

我是HWIOAuthBundle和Symfony2.3 + FosUserBundle中的新成員。 我在我的項目中使用此包進行Facebook,Twitter,Googleplus登錄。如何覆蓋HWIOAuthBundle樹枝文件

我已經成功安裝這個,這工作正常。 但我想覆蓋login.html.twig因爲我想顯示Facebook,Twitter,谷歌加圖片到我們的樹枝文件,但我不知道如何在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> 

我怎樣才能做到這一點?

回答

3

您有兩個解決方案:

  1. 使用捆綁的繼承和完善與父路徑模板
  2. 聲明一個模板在你的應用程序/ Ressources /這樣的:應用程序/ Ressources/AcmeBundle /目錄/ template.html.twig(其中/AcmeBundle/Directory/template.html.twig是你的供應商的模板完全相同的路徑)

文件:

+0

謝謝,但我已經繼承fos用戶包和模板所以我怎麼可以繼承另一個? – Sid

+0

使用第二種方法;) –

+0

謝謝,我擴展了控制器,然後覆蓋樹枝文件。然後這是根據我的工作。 – 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 %} 

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項目。