包括模板之间的块内容



我有一个很大的问题,即包括模板之间的块。代码如下:

{# layout.html.twig #} (simplified version)
<html>
<head>
.....
.....
{% block stylesheets%}{% endblock %}
{% block javascripts %}{% endblock %}
</head>
<body>
{% block content %}{% endblock %}
</body>
</html>
{# index.html.twig #}
{% extends "demoBundle::layout.html.twig" %}
{% block content %}
some content           {# <---- this is working #}
{% render(controller('demoBundle:Default:renderIndexContent')) %}
{% endblock %}
{# DefaultController.php #}
...
...
return $this->render('demoBundle:Gallery:slideshow.html.twig');
...
...
{# slideshow.html.twig #}
{% block stylesheet %}   {# <---- this is not working #}
<link rel="stylesheets" href="{{ asset('bundles/cms/css/pictureSlider.css') }}"/>
{% endblock %}

这个想法是,index.html.twig扩展了布局,并使用名称slideshow.html.twig Trought Controller呈现另一个模板。但是我需要在模板slideShow.html.twig中包含样式表的内块,以在主模板布局中的头部位置处于样式表块。html.twig,但行不通。当我将标签{{parent()}}添加到模板slideShow.html.twig中的块样式表时,Symfony Say

在Demobundle:Gallery:Slideshow.html.twig in 3 Line 3

中禁止在模板上调用"父"。

/编辑*/

否,这不是我的解决方案,因为我从defaultcontroller.php in template index.html.twig中有一些变量返回。

好,以前的代码只是一个简单的示例。我包含一个具体示例

index.html.twig {%扩展" cmsbundle :: layout.html.twig"%}

{% block rightSideBar %}{% endblock %}
{% block content %}
    <div class="top_block">
      <div id="module-1" class="no-title">
          {% for block in blocksCenter %}
            {% if (block.position=="center-top") %}
                {% render(controller('cmsBundle:Default:renderIndexBlocks',{'blockname':block.name})) %}
            {% endif %}
          {% endfor %}
      </div>
...

block.name是例如"幻灯片"。在DefaultController.php内部方法RenderIndexBlocksAction中是此代码:

defaultController.php

return $this->render(
                'cmsBundle:Blocks:'.$blockname.'.html.twig'
                ,array('items'=>$items)
                );

此渲染模板名称slideShow.html.twig,有此代码:

slideshow.html.twig

{% block styles %}
{{ parent() }}
    <link rel="stylesheet" href="{{ asset('bundles/cms/css/pictureSlider.css') }}" type="text/css" media="all"/>
{% endblock %}
{% block javascripts %}
    <script type="text/javascript" src="{{ asset('bundles/cms/js/jquery-1.11.0.min.js') }}"></script>
{% endblock %}

对于完整,她是布局。html.twig

layout.html.twig

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=8">
    <meta http-equiv="Content-Style-Type" content="text/css" />
    <link rel="shortcut icon" href="{{ asset('bundles/cms/images/favicon.ico') }}" type="image/x-icon" />
    <meta name="keywords" content="" />
    <meta name="robots" content="index, follow" />
    <link rel="stylesheet" href="{{ asset('bundles/cms/css/style.css') }}" type="text/css" media="all"/>
    <link rel="stylesheet" href="{{ asset('bundles/cms/css/menu.css') }}" type="text/css" media="all"/>
    {% block styles %}{% endblock %}
    {% block javascripts %}{% endblock %}
</head>
<body>
    <div id="bg_image"><img src="{{ asset('bundles/cms/images/AbstractBlue.jpg') }}" alt="" style="width:100%; height:100%;"></div>
    <div id="mainContainer">
        <div id="header">
            <div id="top1">
                <div id="logo">
                    <div id="search">
                        {% include 'cmsBundle:Default:search.html.twig' %}
                    </div>
                    <div class="wrapper" style="width:987px"/>
                            <div id="menu" class="menu">
                                {% render(controller('cmsBundle:Default:renderMenu')) %}
                            </div>
                        </div>
                    </div>
                </div>
        </div>
        <div id="blocks" class="blocks">{% block rightSideBar %}{% endblock %}</div>
        <!--CONTENT-->
            <div id="mainContentm">
                {% block content %}{% endblock %}
            </div><!-- end #content -->
            <!-- #footer -->
            <div id="footer">
                <div id="footer-left">
                </div>
                <div id="footer-right">
                </div>
            </div><!-- end #footer -->
    </div><!-- end #container -->
</body>
</html>

错误本身在不扩展或使用的模板上调用父不存在的会员的样式表,以回答您在slideshow.html.twig中的问题

{% extends '::index.html.twig' %}

,然后定义

{% block stylesheets %}
{{ parent() }}
<link rel="stylesheets" href="{{ asset('bundles/cms/css/pictureSlider.css') }}"/>
{% endblock %}

如果index.html.twig中有任何样式表,则这些样式将包含在您的模板中,因为查看index.html.twig代码有空的stylesheets块。如果layout.html.twig还定义了样式表的块,则您应该在index.html.twig的CC_8块中调用{{ parent() }}函数因此,它将包括其父级布局的样式表,即layout.html.twig

相关内容

  • 没有找到相关文章

最新更新