我想知道控制器中我的资产的名称。我使用资产,因此资产名称是随机的。
例如对于我的CSS,在我的Twig中我有:
{% block stylesheets %}
{% stylesheets filter='uglifycss' filter='cssrewrite'
'assets/css/bootstrap.min.css'
'assets/css/core.css'
%}
<link rel="stylesheet" href="{{ asset(asset_url) }}" />
{% endstylesheets %}
{% endblock %}
结果:
<link rel="stylesheet" href="http://local.example.com/css/c491e8f-285c78f.css" />
现在,我想在控制器中自动找到名称c491e8f-285c78f.css
。
我试过了:
var_dump($this->get('assetic.asset_manager')->getNames(),
$this->get('assetic.asset_manager')->get('c491e8f')->getTargetPath());
结果:
array(3) {
[0] => string(7) "c491e8f"
[1] => string(7) "b011b98"
[2] => string(7) "f4e7a09"
}
string(35) "_controller/css/c491e8f-285c78f.css"
这还不错,但我欺骗了找到“c491e8f”的名字......我怎么知道这是我的css资产名称?我如何自动找到资产路径?
答案 0 :(得分:2)
当您阅读包kriswallsmith/assetic
的源代码时,您会发现获取您的资产名称并非易事
(资产具有真正唯一的名称),并且它们位于getNames()
数组中,以模板中的外观顺序排列。
其中一个解决方案是使用命名资产
http://symfony.com/doc/current/assetic/asset_management.html#using-named-assets
在config.yml中:
assets:
bootstrap_and_core:
inputs:
- 'assets/css/bootstrap.min.css'
- 'assets/css/core.css'
您可能还需要运行命令_ php app/console assetic:dump
然后:
var_dump($this->get('assetic.asset_manager')->get('bootstrap_and_core')->getTargetPath());
string 'assetic/bootstrap_and_core.css' (length=30)
<强>姓名:强>
var_dump($this->get('assetic.asset_manager')->getNames());
array (size=1)
0 => string 'bootstrap_and_core' (length=18)
<强>嫩枝:强>
{% block stylesheets %}
{% stylesheets filter='uglifycss' filter='cssrewrite'
'@bootstrap_and_core'
%}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
{% endblock %}
另请注意:
您不必使用{{ asset(asset_url) }}
- {{ asset_url }}