Definir atributos booleanos sem valor com a função de tag

Aug 20 2020

Ao usar a função de tag , como lidar com atributos sem valor que também podem ser nulos?

Por exemplo, é ótimo podermos fazer ...

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

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

…para gerar:

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

Mas e se o requiredatributo também for uma variável? Não podemos fazer:

{% set reqVar  = '' %}

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

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

… Porque se reqVarestiver vazio, seria desejável que o requiredatributo não fosse escrito. Para gerar:

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

… E não :

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

A mesma coisa se aplica a outros atributos booleanos como hidden.

Existe uma maneira de fazer isso com esta função? O que estou perdendo ou não recebendo?

Respostas

4 BrandonKelly Aug 20 2020 at 00:59

Se um atributo for definido como true, ele será adicionado sem um valor.

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

Além disso, se for definido como nullou false, será omitido, como se nunca tivesse sido listado em primeiro lugar.