5

私はこれを持っています:

ShopBundle
  Controller
  Resources
    public
      images
        marker.png
    views
      Default
        index.html.twig

私のindex.html.twigでは、これが欲しい

<img src="{{ asset("images/marker.png") }}"/>

そして、自分のmarker.pngを使用したいだけの人が私のバンドルを使用して、私のものを継承したバンドルを構築し、ファイル構造に従うだけで画像を配置するだけでいいと思います:

MyShopBundle
  Resources
    public
      images
        marker.png

Symfony2 でこれを行う簡単な方法はありますか? 必要性はとても単純に思えるので、まだ答えを見つけていないなんて信じられません。

そう、

  • バンドル リソース ディレクトリからバンドル テンプレートに画像アセットを含めるにはどうすればよいですか? 既に実行しました./apps/hfr/console assets:install webが、テンプレートが正しい URL を出力しません (/bundles/ShopBundle/Resources/public/images/png ではなく、/images/marker.png)

  • 私が望む方法をオーバーライドすることは可能ですか、それとも道に迷いましたか?

4

1 に答える 1

6

解決:

@ 構文を使用します ...

{% image '@VendorMyShopBundleBundle/Resources/public/images/example.jpg'
    output='/images/example.jpg' %}
    <img src="{{ asset_url }}" alt="Example"/>
{% endimage %}

通常、 Vendor/YourBundle/Resources/publicは Web サーバーからアクセスできないことに注意してください。

したがって、assets:install コマンドはアセットをweb/bundles/vendoryourbundleにコピーします。

{{ asset('path/to/asset.jpg') }} 関数は、開発環境を使用している場合、アセットの URL を調整します。

 http://hostname/app_dev.php 

から

/path/to/asset.jpg 

/app_dev.php/to/asset.jpg

[編集]

アセットをより細かく制御したい場合は、アセット コレクションの使用を検討してください。

次のように設定できます。

# app/Resources/config/config.yml

assetic:
    [...]
    assets:
        css_bootstrap:
            inputs:
                -  %kernel.root_dir%/../src/Vendor/YourBundle/Resources/public/twitter-bootstrap/less/bootstrap.less
                - [...]
            filters:
                - lessphp
                - [...]
            output: css/bootstrap.css

         my_image:
            inputs: 
                - %kernel.root_dir%/../path/to/image.png
            filters:
                - optipng
            output: images/image-with-new-name.png

その後、次のようにテンプレートで使用します。

{% stylesheets '@css_bootstrap' %}
    <link rel="stylesheet" type="text/css" href="{{ asset_url }}">
{% endstylesheets %}

assetic/assets/packagename/inputs 構成配列が @VendorYourBundle 構文もサポートしており、バンドルの継承を使用しているかどうかは、現時点ではわかりません。

添加:

これらのパッケージを使用する前に、コンソール コマンドを使用する必要があります。

php app/console assetic:dump
于 2013-05-21T14:23:00.337 に答える