symfony2 Bundle公共资源URL

时间:2015-08-30 06:11:55

标签: symfony assetic

我写了一个包含公共资产的包:图片,CSS和Javascript。 一切都存储在我的资源包/公共/文件夹中。

我启动一个禁欲命令,在全局Web项目文件夹中生成符号链接。

我的问题是我的图书馆名称在图片,CSS和Javascript网址中可见。 有没有办法重写此URL。 我想通过以下网址访问我的CSS:http://mywebsite.com/mycustomfoldername/mycss.css

第二个问题:直接在全球Web项目文件夹中编写文件是一件好事吗?

2 个答案:

答案 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:installassetic: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'