資産を扱う場合、2つのオプションがあります。コンピューターにアセットが物理的に表示されない理由は、オプション1を選択したためです。
オプション1:SYMFONYはファイルを動的に処理できます
つまり、開発環境で生成された各アセットパスはSymfonyによって動的に処理されます。したがって、Asseticは、コンピューターに物理的に存在しないCSSおよびJavaScriptファイルへのパスを生成します。これは、ファイルを開いてコンテンツを提供する内部Symfonyコントローラーです。
利点:
-アセットに加えられた変更はすぐに有効になります-Symfonyがファイルを動的に生成するため、これは開発モードで優れています
短所:
-各アセットの動的なレンダリングが遅すぎるため、prodモードではこれは不可能です-アセットはコンピューターから直接アクセスできません(そのため、ファイルが見つかりません)-使用している場合は非常に遅くなる可能性がありますたくさんのフィルターなど...
開発モードでこれを行うには、config_dev.ymlでasseticconfigを編集するだけです。
assetic:
use_controller: true
オプション2:アセットファイルのダンプ
アセットを動的に処理したくない場合は、アセットを手動でダンプできます。つまり、実際にアセットをコンピューターに物理的に書き込むことができます。
利点:
-Symfonyがファイルを動的に生成する必要がないため、実行速度が大幅に向上します-したがって、これはprodモードで最適です-ファイルはWeb /ディレクトリ(または出力する場所)で物理的にアクセスできます
短所:
-何かを変更するたびにアセットをダンプする必要があります。または、-watchコマンドを使用してアセットをダンプできます。これは、開発モードで作業している場合は少し面倒になる可能性があります。
これをする:
use_controllerをfalse(config_dev.yml)に設定します。
assetic:
debug: %kernel.debug%
use_controller: false
必要に応じて、アセットを読み取って出力する場所を選択することもできます
assetic:
read_from: %kernel.root_dir%/Resources/views/
write_to: %kernel.root_dir%/../web/thefolderyouwant/
出力は、 asseticのwrite_to構成から開始されます。
{% stylesheets
'@FooBundle/Resources/public/css/main.css'
output='css/main.css'
%}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
続行するとリソースエラーが発生するため、config_dev.ymlでこれらのアセットルートをコメントアウトまたは削除します。
_assetic:
resource: .
type: assetic
最後に、アセットを自動的に生成できるため、行った変更はすぐに有効になります。
php app/console assetic:dump --watch
その場合、ファイルは利用可能になります。
/web/thefolderyouwant/css/main.css
詳細については、クックブックを参照してください:資産管理にAsseticを使用する方法は?