symfony - Override an image from a bundle -
i have this:
shopbundle   controller   resources     public       images         marker.png     views       default         index.html.twig in index.html.twig, i'd have this
<img src="{{ asset("images/marker.png") }}"/> and i'd love people using bundle want use own marker.png have build bundle inheriting mine , place image following files structure:
myshopbundle   resources     public       images         marker.png is there simple way in symfony2 ? need seems simple can't believe didn't find answers already.
so,
- how include image asset in bundle template bundle resources directory ? did - ./apps/hfr/console assets:install webtemplate not print right url (/images/marker.png instead of /bundles/shopbundle/resources/public/images/png)
- is possible override way want or did lost way ? 
solution:
use @ syntax ...
{% image '@vendormyshopbundlebundle/resources/public/images/example.jpg'     output='/images/example.jpg' %}     <img src="{{ asset_url }}" alt="example"/> {% endimage %} please note vendor/yourbundle/resources/public not accessible web server normally.
the assets:install command therefore copy assets web/bundles/vendoryourbundle
the {{ asset('path/to/asset.jpg') }} function adjust url of asset if youre using dev environment:
 http://hostname/app_dev.php  from
/path/to/asset.jpg  to
/app_dev.php/to/asset.jpg [edit]
if want more control on assets maybe consider using asset collections.
you can configure them follows:
# 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 and use them afterwards in template this:
{% stylesheets '@css_bootstrap' %}     <link rel="stylesheet" type="text/css" href="{{ asset_url }}"> {% endstylesheets %} i not sure right if assetic/assets/packagename/inputs configuration array supports @vendoryourbundle syntax aswell , uses bundle inheritance though.
addition:
before can use these packages have use console command:
php app/console assetic:dump 
Comments
Post a Comment