2017-03-23 1 views
0

Je voudrais connaître les noms de mes actifs dans un contrôleur. J'utilise assetic, donc les noms des assets sont aléatoires.Symfony - Trouver le nom de l'actif avec assetic

Par exemple, pour mon css, dans mon Brindille J'ai:

{% 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 %} 

Le résultat:

<link rel="stylesheet" href="http://local.example.com/css/c491e8f-285c78f.css" />

Maintenant, je voudrais trouver le nom c491e8f-285c78f.css automatiquement dans mon contrôleur. J'ai essayé:

var_dump($this->get('assetic.asset_manager')->getNames(), 
     $this->get('assetic.asset_manager')->get('c491e8f')->getTargetPath()); 

Le résultat:

array(3) { 
    [0] => string(7) "c491e8f" 
    [1] => string(7) "b011b98" 
    [2] => string(7) "f4e7a09" 
} 
string(35) "_controller/css/c491e8f-285c78f.css" 

Il est pas mal, mais je l'ai triché pour trouver le nom de « c491e8f » ... Comment puis-je savoir qu'il est mon nom d'actif css? Et comment je peux trouver automatiquement le chemin de l'actif?

Répondre

2

En lisant le code source du paquet kriswallsmith/assetic vous vous rendez compte que ce n'est pas trivial pour obtenir les noms de vous actifs (actifs ont des noms vraiment uniques) et ils sont dans le tableau getNames() afin de appeararance dans les modèles.

L'une des solutions consiste à Utilisation nommés actifs

http://symfony.com/doc/current/assetic/asset_management.html#using-named-assets

dans config.yml:

assets: 
    bootstrap_and_core: 
     inputs: 
      - 'assets/css/bootstrap.min.css' 
      - 'assets/css/core.css' 

vous aurez probablement besoin aussi d'exécuter le Command_ php app/console assetic:dump

puis:

var_dump($this->get('assetic.asset_manager')->get('bootstrap_and_core')->getTargetPath()); 

string 'assetic/bootstrap_and_core.css' (length=30) 

Noms:

var_dump($this->get('assetic.asset_manager')->getNames()); 

array (size=1) 
    0 => string 'bootstrap_and_core' (length=18) 

Brindille:

{% block stylesheets %} 
    {% stylesheets filter='uglifycss' filter='cssrewrite' 
     '@bootstrap_and_core' 
    %} 
     <link rel="stylesheet" href="{{ asset_url }}" /> 
    {% endstylesheets %} 
{% endblock %} 

Notez également: vous ne devez pas utiliser {{ asset(asset_url) }} - il serait suffisant pour {{ asset_url }}