0

テンプレートが存在しない場合は、コンテンツをレンダリングするだけになるように、このようなことをしたいと考えています。ただし、このようにコーディングできないため、以下のコードは機能しません。

{% if app.request.attributes.get('twig_parent_template') != "" %}
    {% extends app.request.attributes.get('twig_parent_template') %}
    {% block title "The Title Here" %}
{% endif %}

{% block content %}
Content here
{% endblock %}

このようなことを何とかできないでしょうか?

4

1 に答える 1

3

Twig extendsには、このトピックに関する優れたドキュメントがあります。

拡張するテンプレートを指定する必要があるため、私の考えではデフォルト テンプレートの作成に進みます。

@Bundle/Resources/views/yourview.html.twig

{% set extender = app.request.attributes.get('twig_parent_template') ? : 'Bundle::default.html.twig' %}
{% extends extender %}

{% block title "Your title" %}
{% block content %}
    Your content
{% endblock %}

@Bundle/Resources/views/default.html.twig

{% block content %}{% endblock %}

@Bundle/Resources/views/parent.html.twig

{% block title %}{% endblock %}
{% block content %}{% endblock %}

が設定されている場合app.request.attributes.get('twig_parent_template')は、その値で指定されたテンプレートをレンダリングします。それ以外の場合は、ブロックのみを含む
ようにレンダリングされますdefault.html.twigcontent

于 2013-04-08T08:36:08.290 に答える