Установка бессмысленных логических атрибутов с помощью функции тега

Aug 20 2020

Как при использовании функции тега обрабатывать бессмысленные атрибуты, которые также могут быть нулевыми?

Например, здорово, что мы умеем…

{% set idVar   = 'idstring' %}
{% set nameVar = 'namestring' %}
{% set typeVar = 'typestring' %}

{{ tag('input', {
    id: idVar,
    name: nameVar,
    type: typeVar
}) }}

…генерировать:

<input id="idstring" name="namestring" type="typestring">

Но как насчет того, чтобы requiredатрибут также был переменной? Мы не можем:

{% set reqVar  = '' %}

{% if field is required %}
    {% set reqVar = 'required' %}
{% endif %}

{{ tag('input', {
    id: idVar,
    name: nameVar,
    required: reqVar
}) }}

… Потому что, если reqVarоно пустое, хотелось бы, чтобы requiredатрибут вообще не записывался. Генерировать:

<input id="idstring" name="namestring" type="typestring">

… А не :

<input id="idstring" name="namestring" type="typestring" required>

То же самое относится и к другим логическим атрибутам, например hidden.

Есть ли способ сделать это с помощью этой функции? Что я упускаю или не получаю?

Ответы

4 BrandonKelly Aug 20 2020 at 00:59

Если для атрибута установлено значение true, он будет добавлен без значения.

{{ tag('input', {
    id: idVar,
    name: nameVar,
    required: true
}) }}

Кроме того, если для него установлено значение nullили false, он будет опущен, как если бы он никогда не был указан изначально.