生产环境中的Asset_url symfony 3

时间:2016-11-15 14:56:32

标签: css symfony assets environment

我对我生成的资产管理网站存在疑问。

在视图中,这就是我所做的:

{% block stylesheets %}
        {% stylesheets
            'assets/vendor/bootstrap/dist/css/bootstrap.min.css'
            'assets/vendor/font-awesome/css/font-awesome.min.css'
            'assets/vendor/dist/css/*.css'
            output = 'bundles/compiled/css/app.css' %}
            <link rel="stylesheet" href="{{ asset_url }}" />
        {% endstylesheets %}
{% endblock %}

{% javascripts
            'assets/vendor/jquery/dist/jquery.min.js'
            'assets/vendor/bootstrap/dist/js/bootstrap.min.js'
            'assets/vendor/dist/js/wow.min.js'
            'assets/vendor/dist/js/slider.js'
            'assets/vendor/dist/js/jquery.fancybox.js'
            'assets/vendor/dist/js/owl.carousel.min.js'
            'assets/vendor/dist/js/main.js'
            'assets/vendor/dist/js/modernizr-2.6.2.min.js' 
            output = 'bundles/compiled/js/app.js' %}
            <script src="{{ asset_url }}"></script>
{% endjavascripts %}

在开发环境中,应用不会将这些输出链接称为assetic:dump生成的链接:

  

束/编译/ CSS / app.css

  

束/编译/ JS / app.js /

在/ web文件夹之后。

生产中,我无法到达这些地点。我得到了404 例如http://link.com/bundles/compiled/css/app.css

那么,如何配置我的config.yml以便在prod环境中覆盖该路径? 这就是我所拥有的:

assetic:
    debug:          '%kernel.debug%'
    use_controller: '%kernel.debug%'
    filters:
cssrewrite: ~

**编辑:**我发现了问题。我的资产配置没问题,问题出在VirtualHosts文件中(modrewrite line,具体而言),它只接受&#34; .php&#34;扩展文件和Web /文件夹权限。

1 个答案:

答案 0 :(得分:0)

这是使用AsseticBundle的全部意义!当您处于prod模式时,您需要转储资产文件。看看here

php bin/console cache:clear --env=prod //clear the cache for prod environment
php bin/console assetic:dump --env=prod --no-debug

结果将是一个结果文件(css)中所有bundles/compiled/css/app.css样式表的连接,以及一个结果文件中所有js脚本的串联( bundles/compiled/js/app.js),reducing the requests to the server的原因。 此时,您无法在页面源中看到所有css + js文件,除了compiled/目录中的那两个文件。

当您处于dev模式时,AsseticBundle的默认行为是生成所有css + js文件,以进行调试。也就是说,帮助您轻松调试代码。所以此时您将能够看到所有css + js文件,而不是compiled/目录中的两个文件。

请注意,因为cssrewrite必须是filters的孩子。请参阅here您需要的更正。