Étendre le bloc parent à partir du modèle intégré
P粉033429162
P粉033429162 2023-12-20 21:08:59
0
1
529

Je souhaite injecter de nouvelles valeurs à l'intérieur des blocs de style et de script dans la mise en page, mais à partir du bloc intégré. Bien sûr, cela génère une erreur 在块之外调用“parent”是禁止的.. y-a-t'il une solution?

layout.html.twig :

<!DOCTYPE html>
<html>
    <head>
        {% block style %}
            <link rel="stylesheet" href="foo.css">
        {% endblock %}
    </head>
    <body>

        {% block content "" %}

        {% block scripts %}
            <script src="foo.js"></script>
        {% endblock %}

    </body>
</html>

list.html.twig :

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

{% block content %}
    {% embed datatable.html.twig %}
        {% block tbody %}
            <tr>
                <td>my awesome table</td>
            </tr>
        {% endblock %}
    {% endembed %}
{% endblock %}

datatable.html.twig :

<table id="myDatatable">
    <tbody>
        {% block tbody "" %}
    </tbody>
</table>

{% block styles %}
    {{ parent() }}
    <link rel="stylesheet" href="dataTables.css">
{% endblock %}

{% block scripts %}
    {{ parent() }}
    <script src="dataTables.js"></script>
{% endblock %}

(Je ne peux/ne veux pas utiliser scriptsstyles 内的 list.html.twig 块。它们是数据表模板的一部分,在 list.html.twig.). Malheureusement, je ne peux pas utiliser use car cette fonction ne prend pas en charge les propriétés dynamiques, uniquement les chaînes.

D'après la documentation :

Étant donné que les instructions d'utilisation sont analysées indépendamment du contexte transmis au modèle, les références de modèle ne peuvent pas être des expressions.

P粉033429162
P粉033429162

répondre à tous(1)
P粉333395496

Comme mentionné dans les commentaires, les inclusions/intégrations ne peuvent pas modifier les blocs dans leurs inclueurs. Cela dit, une extension est disponible qui peut résoudre votre problème.

Ce延迟的Twig扩展peut être trouvéici

Fondamentalement, le nœud retarde l'exécution dudit bloc. De cette façon, vous pouvez créer une variable pour contenir tous les liens javascript et les afficher. Cela peut être vu dans les

AdvancedExamples sur github.

Merci à Eugene Leonovich pour avoir réalisé cette extension

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal