Symfony - 使用 assetic 查找资产名称
Symfony - Find asset name with assetic
我想知道控制器中我的资产的名称。我用的是assetic,所以assets的名字是随机的
例如,对于我的 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 资产名称?以及如何自动找到资产路径?
当您阅读 bundle 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 }}
就足够了
我想知道控制器中我的资产的名称。我用的是assetic,所以assets的名字是随机的
例如,对于我的 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 资产名称?以及如何自动找到资产路径?
当您阅读 bundle 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 }}