2017-01-20 1 views
0

Je suis assez nouveau à Twig. Je crée un modèle dans lequel les utilisateurs peuvent définir une famille de polices Google. Ils définissent ces familles de polices pour trois options différentes.Twig vérifier s'il y a des doublons

corps du texte Headings Navigation

Les valeurs sélectionnées sont chargées dans le modèle comme:

<link href='//fonts.googleapis.com/css?family={{ theme.headings_google_webfonts | url_encode }}:400,300,600,800' rel='stylesheet' type='text/css'> 
<link href='//fonts.googleapis.com/css?family={{ theme.body_google_webfonts | url_encode }}:400,300,600,800' rel='stylesheet' type='text/css'> 
<link href='//fonts.googleapis.com/css?family={{ theme.navigation_google_webfonts | url_encode }}:400,300,600,800' rel='stylesheet' type='text/css'> 

Maintenant, quand les gens choisissent la même police pour toutes les options du modèle chargeait la police trois fois qui est absolument inutile.

Comment pouvez-vous faire une règle ou un test qui vérifie si la même valeur de police est déjà présente et si oui, ne le chargez pas?

Je pensais que quelque chose dans les lignes de cela fonctionnerait, mais cela ne fonctionne évidemment pas:

{% set fonts = theme.body_google_webfonts in [theme.navigation_google_webfonts, theme.navigation_google_webfonts] ? ...... %} 
+0

Le contrôleur est un meilleur endroit pour faire ce genre de logique – DarkBee

Répondre

1

Gardez une trace de ce que vous avez déjà inclus dans un tableau:

<link href='//fonts.googleapis.com/css?family={{ theme.headings_google_webfonts | url_encode }}:400,300,600,800' rel='stylesheet' type='text/css'> 
{% set fonts_done = [ theme.headings_google_webfonts ] %} 
{% if theme.body_google_webfonts not in fonts_done %} 
    <link href='//fonts.googleapis.com/css?family={{ theme.body_google_webfonts | url_encode }}:400,300,600,800' rel='stylesheet' type='text/css'> 
    {% set fonts_done = fonts_done|merge([ theme.body_google_webfonts ]) %} 
{% endif %} 
{% if theme.navigation_google_webfonts not in fonts_done %} 
    <link href='//fonts.googleapis.com/css?family={{ theme.navigation_google_webfonts | url_encode }}:400,300,600,800' rel='stylesheet' type='text/css'> 
    {% set fonts_done = fonts_done|merge([ theme.navigation_google_webfonts ]) %} 
{% endif %} 
+0

Impressionnant exactement ce que je cherchais thx! – Meules