【问题标题】:create new blocks in child template which are not defined in the base template in Symfony framework在子模板中创建未在 Symfony 框架的基本模板中定义的新块
【发布时间】:2016-04-24 08:34:28
【问题描述】:

是否可以创建未在 Symfony 框架的基本模板中定义的新块。我试图这样做,但它在运行时不包括那些新定义的块到基本模板中。 我必须将这些代码包含在子模板的单独块中,否则会出现此错误。谢谢。

扩展另一个模板的模板不能有正文 applicationStudentBundle:Default:StudentRequest.html.twig 在第 95 行。

addstudent.html.twig

{% extends 'applicationMainBundle:Default:maintemplate.html.twig' %}


{% block midPanel %}
    //block defined in base template
{% endblock %}

{% block stylePanel %}
    //block which is not defined in base template
{% endblock %}

maintemplate.html.twig //here mainPanel block is defined but stylePanel block is not defined

<html>
<head>
    <!-- Material Design Lite -->
    <script type="text/javascript" src="{{ asset('bundles/applicationmain/js/material.js') }}"></script>
    <link rel="stylesheet" href="{{ asset('bundles/applicationmain/css/material.css') }}">
    <link rel="stylesheet" href="{{ asset('bundles/applicationmain/css/formStyle.css') }}">
    <!-- Material Design icon font -->
    <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
    <!-- Material Design Lite -->
    <script src="https://storage.googleapis.com/code.getmdl.io/1.0.6/material.min.js"></script>
    <link rel="stylesheet" href="https://storage.googleapis.com/code.getmdl.io/1.0.6/material.indigo-pink.min.css">
    <!-- Material Design icon font -->
    <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
    <style>
        .demo-layout-transparent {
            background: url('http://www.getmdl.io/assets/demos/transparent.jpg') center / cover;
        }
        .demo-layout-transparent .mdl-layout__header,
        .demo-layout-transparent .mdl-layout__drawer-button {
            /* This background is dark, so we set text to white. Use 87% black instead if
               your background is light. */
            color: white;
        }

    </style>
</head>
<body>
<!-- Uses a transparent header that draws on top of the layout's background -->
<div class="demo-layout-transparent mdl-layout mdl-js-layout">
    <div class="mdl-layout__drawer">
        <span class="mdl-layout-title">Title</span>
        <nav class="mdl-navigation">
            <a class="mdl-navigation__link" href="">Link</a>
            <a class="mdl-navigation__link" href="">Link</a>
            <a class="mdl-navigation__link" href="">Link</a>
            <a class="mdl-navigation__link" href="">Link</a>
        </nav>
    </div>
    <main class="mdl-layout__content">

        {% block midPanel %}
            My cool posts
        {% endblock %}

     </main>
</div>
</body>
</html>

【问题讨论】:

  • 请发布 applicationStudentBundle:Default:StudentRequest.html.twig 模板的第一行以及您在那里扩展的模板。
  • 扩展模板工作正常。但问题是我想声明一个未在基本模板中定义的新块,因为如果我没有在子模板中创建一个块,那么它会给出上述错误。所以我只需要知道在子模板中创建新块的方式。这就是为什么我没有发布代码。但如果需要,我也可以发布代码。
  • 这是你的问题stackoverflow.com/questions/11739463/… 吗?
  • thanks.But不是这个问题,如果子模板中的代码块之外的代码会发生错误。这就是为什么我想创建新块而不是在块之外有代码的原因。但问题是该块未在基本模板中定义。
  • 在这种情况下,您应该发布您的模板,以便我们检查并找到问题。

标签: php templates symfony-2.7


【解决方案1】:

twig 允许这样的事情:

{# base.html.twig #}

    {% block body%}

    {% endblock%}

{# base.html.twig #}


{# child.html.twig #}

    {% extends 'base.html.twig'%}

     {% block body%}

         {% block hahahablock%}

         {% endblock%}

         {% block newblock%}

         {% endblock%}

    {% endblock%}

{# child.html.twig #}

{# another.html.twig #}

    {% extends 'child.html.twig'%}        

    {% block hahahablock%}

    {% endblock%}

    {% block newblock%}

    {% endblock%}

{# another.html.twig #}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多