我有这个:
ShopBundle
Controller
Resources
public
images
marker.png
views
Default
index.html.twig
Run Code Online (Sandbox Code Playgroud)
在我的index.html.twig中,我想要这个
<img src="{{ asset("images/marker.png") }}"/>
Run Code Online (Sandbox Code Playgroud)
我喜欢使用我的捆绑包的人,他们只想使用他们自己的marker.png来构建一个继承我的捆绑包,并通过以下文件结构放置他们的图像:
MyShopBundle
Resources
public
images
marker.png
Run Code Online (Sandbox Code Playgroud)
在Symfony2中有没有简单的方法呢?需要似乎很简单,我无法相信我没有找到答案.
所以,
如何在捆绑资源目录中的捆绑模板中包含图像资源?我已经做了./apps/hfr/console assets:install web但是我的模板没有打印出正确的网址(/ images/marker.png而不是/ bundles/ShopBundle/Resources/public/images/png)
是否有可能覆盖我想要的方式或者我迷失了方向?
解:
使用@语法...
{% image '@VendorMyShopBundleBundle/Resources/public/images/example.jpg'
output='/images/example.jpg' %}
<img src="{{ asset_url }}" alt="Example"/>
{% endimage %}
Run Code Online (Sandbox Code Playgroud)
请注意,您的Web服务器通常无法访问Vendor/YourBundle/Resources/public.
因此,assets:install命令会将资产复制到web/bundles/vendoryourbundle
如果您使用开发环境,{{asset('path/to/asset.jpg')}}函数将调整您的资产的网址:
http://hostname/app_dev.php
Run Code Online (Sandbox Code Playgroud)
从
/path/to/asset.jpg
Run Code Online (Sandbox Code Playgroud)
至
/app_dev.php/to/asset.jpg
Run Code Online (Sandbox Code Playgroud)
[编辑]
如果您想要更多地控制资产,可以考虑使用资产集合.
您可以按如下方式配置它们:
# 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
Run Code Online (Sandbox Code Playgroud)
然后在模板中使用它们,如下所示:
{% stylesheets '@css_bootstrap' %}
<link rel="stylesheet" type="text/css" href="{{ asset_url }}">
{% endstylesheets %}
Run Code Online (Sandbox Code Playgroud)
我现在不确定如果assetic/assets/packagename/inputs配置数组支持@VendorYourBundle语法,然后使用bundle继承.
加成:
在使用这些软件包之前,您必须使用console命令:
php app/console assetic:dump
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2462 次 |
| 最近记录: |