1

テンプレートエンジンとしてSwigを使用しています。

パーシャルを含める必要がありますが、別のパーシャルのブロックにのみ含める必要があります。しかし、Swig は、ブロック タグを無視して、すぐ下にそれを含めます。これがどのように見えるかです:

1.

レイアウト.html

<!DOCTYPE html>
<html>
    <head>
        {% block title %}{% endblock %}
        {% block headtag %}
            <link rel='stylesheet' href='/assets/css/global.css' />
            <link rel='stylesheet' href='/bower_components/bootstrap/dist/css/bootstrap.css' />
            <script src="/bower_components/jquery/dist/jquery.js"></script>
            <script src="/bower_components/bootstrap/dist/js/bootstrap.js"></script>
        {% endblock %}
    </head>

    <body>
        <div class="container cmt">

            {% block content %}{% endblock %}

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

2.

これは、リクエスト後にレンダリングされるページ ビューです。

index.html

{% extends 'layouts/layout.html' %}


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

{% block headtag %}
    {% parent %}
    <link href="/assets/css/index/index.css" rel="stylesheet">
    <link href="/assets/css/header.css" rel="stylesheet">
{% endblock %}



{% block content %}

    {% include 'index_content.html' %}

{% endblock %}

3.

ここでは、ヘッダーのパーシャル ( partials/header.html) を含めます。header_navそして、このヘッダー パーシャルには、別のパーシャル ( ) を含めたい空のブロック タグ ( ) がありheader_nav.htmlます。しかし、ブロックにのみ。下のheader.htmlを参照してください。

index_content.html

{% include 'partials/header.html' %}

{% block header_nav %}
    {% include 'header_nav.html' %}
{% endblock %}    

4.

の html コードを次に示しpartials/header.htmlます。ブロックタグを参照してくださいheader_nav。そのブロックにheader_nav.htmlを配置したいと思います。しかし、うまくいきません。header_nav.html をpartials /header.htmlのすぐ下に配置します。

<div class="clearfix mb30">

    <div class="row">

        <div class="col-md-3">
            <div id="logo_div" class="">
                <div class="logo_div">
                    <a href="/" title="">
                        <span class="logo_span"></span>
                    </a>
                </div>
            </div>
        </div>

        <div class="col-md-9 hctrlbar">

            {% block header_nav %}
                ... I want to include a partial here only ...
            {% endblock %}

        </div>

    </div>
</div>

... But Swig ignores header_nav block and places here for some reason ...

それを達成する方法は?今のところ私が理解しているように、これは Swig の本当の欠点です。回避策はありますか?

4

1 に答える 1

0

私があなたを正しければ、これはできません。

この同様の質問を見てください。このコメントには、 githubの関連する問題へのリンクがあります

ポールアームストロングは次のように書いています。

含まれているテンプレートでは、ブロックはサポートされていません。同じことを達成するために、拡張/継承を構造化する必要があります...

...複数の extends を使用する必要があります... include 内の
ブロックはサポートされません。

あなたがチェックしたいと思うかもしれないあなたに似た例もあります。

于 2014-06-24T20:56:19.933 に答える