树枝检查是否有重复

时间:2017-01-20 18:09:38

标签: symfony fonts twig

我对Twig相当新鲜。我正在创建一个用户可以设置Google字体系列的模板。他们为三种不同的选项设置了这些字体系列。

正文 标题 导航

所选值将加载到模板中,如:

<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'>

现在,当人们为所有选项选择相同的字体时,模板会将字体加载三次,这绝对是绝对的。

如何制定规则或测试以检查是否已存在相同的字体值,如果是,则不加载它?

我认为这样做会有所作为,但这显然不起作用:

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

1 个答案:

答案 0 :(得分:1)

记录您已包含在阵列中的内容:

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