parisek / twig-attribute
为元素添加属性的 Twig 扩展
v1.4.1
2023-09-24 13:20 UTC
Requires
- php: >=8.1.0
- drupal/core-render: ^9.0|^10.0
- drupal/core-utility: ^9.0|^10.0
- twig/twig: ^2.4|^3.0
README
Twig 缺乏处理 HTML 属性的包装函数。我从 Drupal 中借用了非常棒的 Attribute 类。它能够收集、净化并以良好的方式渲染 HTML 属性。
此包是基于问题 #2664570 - Move Attribute classes under Drupal\Component 创建的,这个问题为在 Drupal 之外使用此类奠定了基础。遗憾的是,由于问题仍然开放,我不得不复制代码。我希望问题能尽快合并,这样我就可以切换到从 Drupal 核心分离出来的官方组件,并正确归属。预期的组件应在 https://github.com/drupal/core-attribute 上提供。
安装
可以使用 composer 容易地安装 Twig Attribute 扩展。
composer require parisek/twig-attribute
用法
$twig = new Twig_Environment($loader); $twig->addExtension(new Parisek\Twig\AttributeExtension());
要在 symfony 项目中使用,请 将扩展注册为服务。
services: twig.extension.attribute: class: Parisek\Twig\AttributeExtension tags: - { name: twig.extension }
模板
{% set my_attribute = create_attribute() %} {% set my_classes = [ 'kittens', 'llamas', isKitten ? 'cats' : 'dogs', ] %} <div{{ my_attribute.addClass(my_classes).setAttribute('id', 'myUniqueId') }}> {{ content }} </div>
<div{{ create_attribute({'class': ['region', 'region--header']}) }}> {{ content }} </div>
示例来自 官方 Drupal 文档。