在Symfony2中为Assetic配置输出目录
我想全局配置assetic转储JS文件的输出目录。目前,他们总是访问在Symfony2中为Assetic配置输出目录,symfony,assetic,Symfony,Assetic,我想全局配置assetic转储JS文件的输出目录。目前,他们总是访问web/js/*。我想将其更改为web/js/compiled/* 可以在每个文件级别指定此选项: 似乎找不到在我的Symfony应用程序中全局设置此项的方法。有我丢失的配置参数吗 更新 找到名为write\u to的资产配置参数。在config.yml中设置此选项会导致命令行assetic:dump将文件转储到新目录,但在细枝文件中,asset\u urlvar仍然指向原始路径。您可以将细枝的资产路径(assets\u bas
web/js/*
。我想将其更改为web/js/compiled/*
可以在每个文件级别指定此选项:
似乎找不到在我的Symfony应用程序中全局设置此项的方法。有我丢失的配置参数吗
更新
找到名为
write\u to
的资产配置参数。在config.yml
中设置此选项会导致命令行assetic:dump
将文件转储到新目录,但在细枝文件中,asset\u url
var仍然指向原始路径。您可以将细枝的资产路径(assets\u base\u url
)设置为静态路径,而不是使用相对路径。在config.yml文件中,它看起来类似于:
framework:
templating:
engines: ['twig']
assets_base_urls:
http: [http://path.to-cdn.com]
这将影响asset以及twig的
asset()
方法的asset\u url
。后者可能需要,也可能不需要。您应该使用属性write\u to
在我的配置示例中,我使用
# Assetic Configuration
assetic:
debug: %kernel.debug%
use_controller: %kernel.debug%
read_from: %kernel.root_dir%/Resources/views/
write_to: %kernel.root_dir%/../web/static/
输出字符串从结尾处开始写入
例如
{% javascripts filter="closure" output='js/main.js'
两者将分别放在/web/static/js/main.js
和/web/static/css/screen.css
用于指定用于从http和ssl(https)页面引用的资产的基本URL
“强> >代码> AsExtSkyBaseUrs[U/COD]也被<代码> {%图像%} /代码>作为代码前的根>输出< /代码>值,但是 {%%图像%}在呈现HTML(仅当抛出)时,不考虑<代码> Wrave>到/Cuth>,因此最好不要使用<代码> RealeSe> < /Cord> >,只依赖于代码>输出< /Cord>值>。strong>关于它的更多信息,请在和中尝试此命令
$app/console--env=prod-assetic:dump-web/
您只需更改您想要的url,而不是“web/”帮助我解决了这个问题。
在dev中,您的资产仍将通过控制器,但在生产中,URL将根据您的需要
示例config.yml:
assetic:
write-to: %kernel.root_dir%/../web/assets
...
framework:
...
templating:
engines: ['twig']
packages:
assetic:
base_urls: '/assets'
模板中的示例:
{% block javascripts %}
{% javascripts '@jquery' '@bootstrap_js' '@backbone' '@handlebars' combine=true package='assetic' %}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
{% endblock %}
{%block javascripts%}
{%javascripts'@jquery'@bootstrap_js'@backbone'@handlebar'combine=true package='assetic'}
{%endjavascripts%}
{%endblock%}
请注意,您必须在java脚本标记中添加package='assetic'属性。在我看来,这是一个很好的折衷方案,因为它不会像kmfk的解决方案那样将资产从其他捆绑包中分离出来。请简要说明一下。如果您正在使用
资产\u基础\u URL
,来指定相对基础URL,则这仅适用于Symfony 2.7之前的版本,因为该版本中引入了新的资产组件。有关如何改变这一点的更多信息,请访问,但详细信息如下:
framework:
templating:
assets_base_urls:
http: ['/some-relative-url']
ssl: ['/some-relative-url']
变成:
framework:
assets:
base_path: /some-relative-url
你有没有想出一个解决办法?我假设配置中的
read_from
选项就是我们要找的。然而,我不能选择做任何事情。无论我将read_from参数设置为什么,我的应用程序都使用默认路径。@kmfk Nothing。现在,我们只是为每个javascripts
块设置output
param,但这一点都不理想。是的,我让assetic将我的资产直接转储到我们的S3存储桶,我希望prod环境从那里读取文件,而开发环境则转储到本地文件夹,诸如此类,在我们的开发服务器上,我的模板应该从该文件夹中读取。最后,我检查了控制器中的环境,并将一个var传递给模板,作为cdn的asset\uurl
的前缀。虽然不理想,但它确实起到了作用。那么,当变量{asset\u url}没有注意到它时,为什么会存在这个“write_to”参数呢。这根本没有经过深思熟虑……:(
framework:
assets:
base_path: /some-relative-url