jadu / twig-attribute-parser
将属性数组转换为HTML格式属性,以便在HTML元素中使用。
1.0.0
2023-09-19 09:14 UTC
Requires
- jadu/twig-array-extension: ^1.0
- twig/twig: ^2.0
README
将属性数组转换为HTML格式属性,以便在HTML元素中使用。
可选的 tag
属性还会生成所需的HTML元素,并在Twig视图中根据上下文切换元素时很有用。
输出始终以空格开头,以避免在未传递属性到标记时出现不必要的空格。
示例
{% set arrayToProcess = ['slim': 'shady', 'marshall': 'mathers', 'eminem': true, 'class': 'wrapper'] %} <span{{ attributes(arrayToProcess) }} /> {# output: <span slim="shady" marshall="mathers" eminem class="wrapper" /> #}
布尔属性
布尔属性值将只输出键。如果存在可选的 tag
,则 disabled
布尔属性的行为是上下文相关的(见下文)。
{% set arrayToProcess = ['foo': true] %} <span{{ attributes(arrayToProcess) }} /> {# output: <span foo /> #}
禁用属性
仅在特定元素上,禁用属性才有效。如果您尝试传递一个没有有效 tag
或不支持禁用属性的标签的布尔 disabled
属性,它将输出一个 is-disabled
类,您可以适当进行样式设计。
{% set arrayToProcess = ['disbled': true] %} <span{{ attributes(arrayToProcess) }} /> {# output: <span class="is-disabled" /> #}
如果同时存在 class
属性,则类列表将适当合并。如果类列表中包含 is-disabled
,则不会重复。
{% set arrayToProcess = ['class': 'foo', 'disbled': true] %} <span{{ attributes(arrayToProcess) }} /> {# output: <span class="foo is-disabled" /> #}
如果 tag
是 button
、fieldset
、input
、option
、select
、textarea
或 div
,则将输出禁用属性。
{% set arrayToProcess = ['disbled': true] %} {# note the absence of the element here, we let the attribute parser output it #} <{{ attributes(arrayToProcess, {'tag': ('button')}) }} /> {# output: <button disabled /> #}
如果您想输出 disabled class="disabled"
,您需要将两个属性都传递到数组中。
如果 tag
是 a
,它将添加一个 aria-disabled
属性,这是基于对无障碍性选择的意见。
{% set arrayToProcess = ['disbled': true] %} <{{ attributes(arrayToProcess, {'tag': ('a')}) }} /> {# output: <a aria-disabled="true" /> #}
HTML 实体
HTML 实体将被正确引用以适应HTML标记,这允许在工具提示等之后渲染嵌入的HTML。
{% set arrayToProcess = ['foo': '<span>bar</span> <blink>baz</blink>'] %} <span{{ attributes(arrayToProcess) }} /> {# output: <span foo="<span>bar</span> <blink>baz</blink>" /> #}
空值
空值将被删除。如果您只想显示键,请使用布尔值。
{% set arrayToProcess = ['foo': ''] %} <span{{ attributes(arrayToProcess) }} /> {# output: <span /> #}
嵌套/多维数组
不支持。