我写了一个包含公共资产的包:图片,CSS和Javascript。 一切都存储在我的资源包/公共/文件夹中。
我启动一个禁欲命令,在全局Web项目文件夹中生成符号链接。
我的问题是我的图书馆名称在图片,CSS和Javascript网址中可见。 有没有办法重写此URL。 我想通过以下网址访问我的CSS:http://mywebsite.com/mycustomfoldername/mycss.css
第二个问题:直接在全球Web项目文件夹中编写文件是一件好事吗?
答案 0 :(得分:2)
如果您使用Symfony
内置命令assets:install
命令,它将会更改:
<script src="{{ asset('js/script.js') }}" type="text/javascript"></script>
成:
<script src="/bundles/your-bundle/js/script.js" type="text/javascript"></script>
但是如果您使用Assetic
assetic:dump
命令(这是AsseticBundle
提供的命令),它将会改变:
{% javascripts '@YourBundleBundle/Resources/public/js/script.js' %}
<script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}
进入(生产模式)
<script type="text/javascript" src="/js/as5s31l.js"></script>
我想这可以解决你在网址中发布包名称的问题。
至于将js文件直接放在主web文件夹中:不太好主意,因为所有内容都应该是特定于bundle的,所有代码都在bundle中,所以你的资产也应该。
检查this答案,了解有关assets:install
和assetic:dump commands
之间差异的其他说明
答案 1 :(得分:1)
使用资产。在Twig模板中使用:
{% stylesheets '@MyBundle/Resources/public/css/app.css'
'@MyBundle/Resources/public/css/additional.css'
output='mycss.css' %}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
然后使用命令:php app/console assetic:dump --env=prod
在开发环境中,您会看到http://yoursite.com/09516d4_mycss_1.css
之类的内容,但在制作中会http://yoursite.com/mycss.css
请注意,更改文件后,您必须始终使用assetic:dump
以查看生产中的更改。
对于字体,我使用资产配置:
assetic:
assets:
font-awesome-otf:
inputs: '@AppBundle/Resources/fonts/FontAwesome.otf'
output: 'fonts/FontAwesome.otf'
您可以尝试使用相同的图像:
assetic:
assets:
image-background:
inputs: '@AppBundle/Resources/images/back.jpg'
output: 'images/back.jpg'