2014-02-17 86 views
0

第一:我是Symfony2的新手,只寫了我的第一個項目。樹枝渲染(控制器(...)):訪問父塊

我寫,我想在幾個Symfony的,項目使用畫廊。

我的一般想法是將整個畫廊整合在一起。該API應該是來自gallery-Controller的單個ContollerAction。 我想通過調用

WebsiteTemplate包括在一個網站空間:

{{ render(controller("MyGalleryBundle:Gallery:build")) }} 

這WebsiteTemplate從baseTemplate延伸與CSS塊,JS,等...

BaseTemplate:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/xhtml2/DTD/xhtml1-strict.dtd"> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
     <meta charset="UTF-8" /> 
     [...] 

     <title>{% block title %}{% endblock %}</title> 

     {% block head %} 
      {% block css %}{% endblock %} 
      {% block js %}{% endblock %} 
     {% endblock %} 
    </head> 
    <body> 
     {% block menu %}{% endblock %} 
     {% block body %}{% endblock %} 
    </body> 
</html> 

看來,一切工作正常(HTML結構呈現在正確的地方),但CSS是不是being投入到html文件的頭部,但是正好在html範圍內,這導致沒有css被解析。

我試圖通過簡單地調用從bastTemplate像這樣的塊來實現它:

[ setting some twig variables ] 

{% block head %} 
    {% block css %} 
    {% stylesheets 
     'bundles/doublebeatsgallery/css/base.css' 
     'bundles/doublebeatsgallery/css/picture.css' 
     'bundles/doublebeatsgallery/css/page.css' 
     output="bundles/doublebeatsgallery/css/compiled/main.css" 
    %} 
     <link type="text/css" href="{{ asset_url }}" rel="stylesheet"> 
    {% endstylesheets %} 


    <script type="text/css"> 
     {% set tpl = galleryConfig.look.template %} 

     .tmpl_box:hover { 
      z-index: 5; 
      margin-left: -{{(tpl.popUpWidth - tpl.width)/2}}px; 
      margin-top: -{{(tpl.popUpHeight - tpl.height)/2}}px; 

     } 

    </script> 
    {% endblock %} 
{% endblock %} 


    <div id="galleryHeader" class="galleryBaseContainer backA"> 
     <div id="pContainer"><span>{{selectedGallery}}</span></div> 
    </div> 
    [... rest of html ] 
+0

難道是渲染函數是因爲調用一個新的作用域控制器阻止訪問父塊嗎? – Martin

+2

就是這樣馬丁。 'render'塊可以獨立地由一個像varnish一樣的緩存代理服務。這樣他們就不會知道主請求的任何內容,並且可能完全由緩存提供服務。你可以輕鬆地添加一個額外的渲染(控制器('MyGalleryBundle:Gallery:css'))'塊來解決這個問題。 – nifr

+0

@nifr我不知道這個動作應該是什麼樣子!或者這將如何解決問題。你能給我一個小例子嗎?!那太好了! – Martin

回答

0

你不必重寫head塊本身,只是內部css塊。不知道這是否能解決您的問題,但您可以試試看。

+0

嗯,我首先嚐試沒有頭塊。然後想,也許這可能是它沒有工作然後像這樣嘗試的原因,但它既不工作也不工作... – Martin