私は共有要素がたくさんあるプロジェクトに取り組んでいます。フッター、ヘッダー、ナビゲーションなどが含まれます。今のところ、私はビュー内の共有要素をロードしていますが、私はそれをロードするビューの中に各共有要素に必要なすべてのアセット(依存関係)を提供する必要があります。私はそのステップをスキップし、使用のために実際に準備される要素を読み込むことができるようにしたいと思います(従属するjavascriptとcssファイルを覚えておく必要はありません。 。twigを使ってすぐに使える共有要素を作成する
要素のビュー内で共有要素に必要なすべてのアセットを指定することを考えていました。必要な要素を含めると、アセットが自動的にロードされます。だから私の質問は、これを行うことが可能か、これを達成するための正しい方法ですか?
が、それはコードを使用してさらに良く説明することを願っています:
構造:
views/
- /layout/
-> layout.twig
- /homepage/
-> index.twig
- /shared/
-> navigation.twig
レイアウト:
<!-- HTML headers, etc. -->
{% block assets %}
<link rel="stylesheet" href="xxx" />
{% endblock %}
{% block content %}
{% endblock %}
ビュー:
{% extends "layout/layout.twig" %}
{% block assets %}
{{ parent() }}
<!-- some assets for view -->
{% endblock %}
{% block content %}
{% include "shared/navigation.twig" %}
<!-- content -->
{% endblock %}
共有要素navigation.twig :
// It's not working, of course - just for better explanation of what I'm trying to approach
{% block assets %}
{{ parent() }}
<!-- assets needed for shared element -->
{% endblock %}
<!-- rest of shared element -->
通常、大規模なプロジェクトでは、いくつかの共有要素に多くのものが含まれている可能性があるため、ビュー内のすべてのアセットを読み込まないと思います。また、<body>
の中にスタイルをレンダリングしたくないので、ビュー内に<links>
を作成することは私のための方法ではありません。これは共有要素のように機能し、共有要素ごとに必要なアセットを知らなくても、アセットのロード先とロードされるアセットを制御できます。前もって感謝します。 documentation on use
から
こんにちは、スタイルシートとjavascriptsブロックを別々に使用しようとしましたか? –
あなたはそれが何を意味するのか分かりません。私はそれらを分けて、共有要素に関しては、スクリプトは主にその共有要素のビューの最後にあります(これはうまくありますが、私はむしろそれらをボディの最後に置いています)。スタイルシートはビューから読み込まれます(自分の考えを書いて頭の中に入れたいと思っているので、私にとっては問題のようなものです) –
ベストプラクティスはsymfonyのドキュメントで説明されています:https://symfony.com/doc /3.4/templating.html#including-stylesheets-and-javascripts-in-twig –