2017-03-23 27 views
0

我想知道控制器中的資產名稱。我使用資產,因此資產名稱是隨機的。Symfony - 使用資產查找資產名稱

例如,對於我的CSS,在我的枝條我:

{% 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資產名稱?我如何自動找到資產路徑?

回答

2

當你閱讀包的源代碼kriswallsmith/assetic你就會意識到,這不是小事讓你的名字資產 (資產有非常獨特的名字),他們是getNames()陣列中的模板appeararance的順序。

解決的辦法之一是使用命名資產

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' 

你可能還需要運行COMMAND_ 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 }}