私は現在、Symfony2.1.0を使用してWebアプリケーションを開発しています。
この本のテンプレートの章を読み、アセット(現在は単一のスタイルシート)をWebページに含めようとしています。
この本で言及されている3レベルの継承システムを使用していますが、現在、アプリケーションの構造は次のようになっています。
- app / Resources / views /
- base.html.twig:タイトル、スタイルシート、ボディブロックを含むベーステンプレート。
- src / My / PageBundle / Resources / views
- layout.html.twig:レイアウトテンプレート(ベーステンプレートを拡張)、メインスタイルシートをスタイルシートブロックに追加し、 navigation.html.twigを含む本文ブロックを上書きしてコンテンツブロックを定義する
- layout-admin.html.twig:上記と同じですが、navigation-admin.html.twigを含みます
- src / My / PageBundle / Resources / views / Main
- 標準テンプレート、レイアウトテンプレートを拡張し、そのコンテンツブロックを上書きする
- src / My / PageBundle / Resources / views / Administration
- 管理テンプレート。上記と同じですが、管理レイアウトテンプレートを拡張します。
- src / My / PageBundle / Resources / public / css
- main.css:メインスタイルシート
ご覧のとおり、スタイルシートをバンドルに入れました。これが良い習慣かどうかはわかりません。
さて、layout.htmlにこれを追加しました:
{% block stylesheets %}
{{ parent() }}
<link rel="stylesheet" type="text/css" href="{{ asset('css/main.css)' }}" />
{% endblock %}
ただしasset('css/main.css')
、にリンクしているだけですが/css/main.css
、./app/console assets:install
アセットはにインストールされweb/bundles/mypagebundle/
ます。この方法でバンドル名が公開されるという事実は好きではありません(これにより、ユーザーは私がSymfonyを使用していると疑う可能性があり、Webページの内部を内部に保持するのが好きです)。assets:install
アセットをインストールするディレクトリを変更することはできますか?アセットをweb/に手動でインストールするのは面倒なようです。
スクリプト/スタイルシートを自動的に縮小して1つのファイルにまとめて保存する可能性が個人的に気に入っているので、アセット管理にAsseticを使用することも考えています。ただし、異なるレベルのスタイルシートを含める場合、つまり3レベルの継承システムでは機能しない場合、これは不可能であると聞いています。それを回避することは可能ですか?また、Asseticを使用すると、バンドル名を公開しないようにすることができますか?