私は、数百の小枝テンプレートを含む比較的大きなアプリで作業しています。以下の構造の簡素化を検討:小枝から親テンプレートにスタイルを移動する
{# layout.html.twig #}
<!DOCTYPE html>
<html>
<head>
{% block head %}{% endblock %}
</head>
<body>
{% block body %}{% endblock %}
</body>
</html>
_を
{# view.html.twig #}
{% extends 'layout.html.twig' %}
{% block head %}
{# this will go into the head of the document and works fine #}
{% endblock %}
{% block body %}
{% include 'include.html.twig' %}
{% endblock %}
_私はそのI include
テンプレート、スタイルが含まれているときは常にだけでなく確認する
{# include.html.twig #}
<style>
/*
I want this style block appear in the head of the document (layout.html.twig).
Using {% block head %} is not an option, as this code is evaluated later than the head block is flushed
*/
{{ generate_minified_css_here() }}
</style>
<!-- rest of included content -->
。スタイルとテンプレートの量のために、1つの大きなCSSファイルを生成することはオプションではありません。
これまではscoped
スタイルタグを使用してこれを処理していましたが、スタイルは実際にはほとんどのブラウザで「スコープ」になっていませんが、すべてが完全に検証されていました。最近、W3Cはスコープ付きスタイルを受け入れなくなりました。
私の質問は:include.html.twig
からlayout.html.twig
ヘッドセクションにスタイルを取得するにはどうすればよいですか?
をあなたは '含めることはできません.html.twig' *はlayout.html.twigを操作します。インクルードされたファイルは文字列としてインクルードされるからです。つまり、インクルードされたテンプレートが完全に最初にレンダリングされ、結果がインクルードファイルに配置されることを意味します。 – Yoshi