何时应在树枝中使用{{attributes}}而不是硬编码属性?

时间:2019-02-09 02:56:34

标签: templates twig drupal-8

我正在阅读Drupal中的模板开发。 (https://www.drupal.org/docs/8/theming-drupal-8/using-attributes-in-templates

Drupal建议使用create_attribute()创建一个属性对象,并使用它创建的对象向html元素声明属性。例如:

<div{{ create_attribute({'class': ['region', 'region--header']}) }}>
  {{ content }}
</div>

我通常会在哪里使用

<div class='region region--header'>
  {{ content }}
</div>

我可以想象,如果您需要使用一些条件逻辑添加属性,这可能会很有用。但是我不想模板中包含太多逻辑。

我可能错过了一些必不可少的东西。有人可以澄清使用create_attribute()优于硬编码类的优点吗?什么时候应该使用create_atribute()方法? create_attribute()派上用场的常见情况是什么?

1 个答案:

答案 0 :(得分:0)

恕我直言,在您的示例中,create_attribute()没有任何好处,因为属性值仍在create_attribute()函数中进行了硬编码。

如果将属性保存在一个变量中,该变量可以用(例如)addClass,removeClass,setAttribute等功能在(扩展的)模板中进行操作,则此方法会更加有用。例如,我们定义了属性数组(在枝条或处理器中),用于给定html元素,您只需使用<div {{ create_attribute(attributes_for_this_div) }}></div>呈现属性。

在Drupal核心或常用模块中,我没有找到带有硬编码属性的create_attribute()的单个示例。