Establecer atributos booleanos sin valor con la función de etiqueta

Aug 20 2020

Cuando se usa la función de etiqueta , ¿cómo se manejan los atributos sin valor que también podrían ser nulos?

Por ejemplo, es genial que podamos hacer ...

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

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

…para generar:

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

Pero, ¿qué pasa si el requiredatributo también es una variable? No podemos hacer:

{% set reqVar  = '' %}

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

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

… Porque si reqVarestá vacío, uno querría que el requiredatributo no se escribiera en absoluto. Para generar:

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

… Y no :

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

Lo mismo se aplica a otros atributos booleanos como hidden.

¿Hay alguna forma de hacer esto con esta función? ¿Qué me estoy perdiendo o no obteniendo?

Respuestas

4 BrandonKelly Aug 20 2020 at 00:59

Si un atributo se establece en true, se agregará sin un valor.

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

Además, si se establece en nullo false, se omitirá, como si nunca se hubiera incluido en la lista.