2016-10-31 40 views
0

私のシングルページWebアプリケーションにSymfony 2.8を使用しています。私はすべての必要なリソースを提供するはずのファイルindex.html.twigを持っています。たぶん明らかですが、開発環境では毎回すべてをリロードする必要がありますが、本番環境ではリロードする必要はありません。上記の必要なリソースは、別のバンドルのResourcesからロードされ、vendorフォルダにあります。以下に述べるようSymfony2/Assetic:インポートされたHTMLファイルのアセットパスにバンドルアノテーションを使用

このような理由から、私はconfig.ymlでAsseticを設定している:

assetic: 
    debug: "%kernel.debug%" 
    use_controller: 
     enabled: "%kernel.debug%" 
    workers: 
     cache_busting: 
      enabled: "%kernel.debug%" 

(私はデバッグは、開発環境でのみ有効になっていることを想定しています)

私は/必要なCSSをロードしていますこのようなJavaScriptは

{% stylesheets 
    '@StubbornShowaBundle/Resources/public/stubborn.css' 
    '@StubbornShowaBundle/Resources/public/showa.css' %} 
     <link type="text/css" href="{{ asset_url }}" rel="stylesheet" /> 
{% endstylesheets %} 
{% javascripts 
    '@StubbornShowaBundle/Resources/public/stubborn.js' 
    '@StubbornShowaBundle/Resources/public/showa.js' %} 
     <script src="{{ asset_url }}"></script> 
{% endjavascripts %} 

です。これは意図したとおりに動作しているようです。しかし、私もHTMLファイルをインポートしています。このように:

<link href="{{ asset('@StubbornShowaBundle/Resources/public/polymer/my-component.html') }}" rel="import"/> 

ただし、上記のコードは機能しません。 @StubbornShowaBundle注釈はassetコマンドで使用できないようです。また、HTMLのインポートには、 "ループメソッド"(またはstylesheetsjavascriptsimages)を呼び出す必要はありません。私が問題のファイルに直接リンクしている場合は、コーディングとは別に、周囲のコードとの完全性を完全に壊す醜いハックまで、私はSymfony/Assetic全体を自動的に破棄してリソースの並べ替えシステムを処理し、デバッグは混乱となります。デバッグ中にコードを変更するたびに資産を再ダンプするよう強制しない方法でこれを解決するにはどうすればよいですか? (?それは合理的な方法で解決することは可能です)

答えて

0

JavaScript、CSS、画像と同じ方法でAsseticのHTMLインポートを使用することはできないようです。 To quote from the manual

Asseticを使用して、CSSスタイルシート、JavaScriptファイル、および画像を処理できます。


私が見る限りでは、代わりに行うべきことはケース(要件)によって大きく異なります。おそらくすべてをテンプレートにすることも可能ですが、私の場合、PolymerコンポーネントをインポートしてHTMLファイルをテンプレートにする必要がありました(構文が矛盾しているなど)悪夢でした。 urlを使用してパスを取得し、this answerに記載されている方法を使用しました。

1

資産後:好きなあなたはそれにリンクすることができますダンプ:

href="/bundles/stubbornshowa/polymer/my-component.html" 

をちょうど

/web/bundles/ 
を見て& & asseticをインストール

ディレクトリ

あなたはちょうどあなたがassetic使用できるファイルを更新する場合:--watchダンプまたはassetic:

を見ます

あなたは資産を呼び出す必要があり、あなたのressourcesに新しいファイルを置く場合:中/ウェブ

をインストールするには、また、もしかしたら 「アップロード」というフォルダを作成し、そこに自分のものを置くことができforlder、あなたはそれにリンクすることができますhref = "/ uploads/..." あなたはどんなasseticも必要ありません

+0

おそらく私の説明は不十分でしたが、私はインストールしてダンプできるという事実を認識しています。私が知りたいのは、スタイルシートとJavaScriptのバンドルアノテーションと同じ方法で、自分のHTMLインポートに直接リンクする方法です。 – StubbornShowaGuy

+0

あなたはあなたのテンプレートからアセットを分離する必要があります。asseticはjs、css、img's、fonts asoのようなアセットを使用するためのものです。テンプレートを使用する場合は、小枝を使用してください。 ;-) –

+0

あなたはテンプレートのために小枝を使うべきです、そしてそのテンプレートは資産と混在すべきではありませんが、HTMLであるものはすべてテンプレートではありません。 HTMLとは、それがHyperText Markup Languageで書かれたファイルであることを意味します。私の場合、ポリマーコンポーネントと外部ライブラリです。 – StubbornShowaGuy

関連する問題