Operador ternário de galho, taquigrafia se-então-outro


149

Twig suporta operador ternário?

Eu preciso de alguma lógica condicional como:

{%if ability.id in company_abilities %}
    <tr class="selected">
{%else%}
    <tr>
{%endif%}

mas usando taquigrafia em Twig.


Você poderia alterar a resposta aceita? Eu acho que o meu é mais abrangente e útil para a comunidade, pois abrange todos os tipos de taquigrafia, se estiver no Twig.
Pmpr 23/03

Respostas:


294
{{ (ability.id in company_abilities) ? 'selected' : '' }}

O operador ternário está documentado em ' outros operadores '


1
Isso é muito útil em situações como marcar um botão ou item como ativo para a página atual.
Vahid Amiri

Se VERDADEIRO, como você imprime o skill.id? (no lugar de "selecionado").
precisa saber é

1
@gdaniel{{ (ability.id in company_abilities) ? ability.id : '' }}
Ben Swinburne

obrigado. Estou tendo problemas para imprimir variáveis ​​de galho quando dentro de condicionais inline. Vou tentar.
precisa saber é

Eu estou querendo saber se isso deveria ser capaz de trabalhar em linha para adicionar um valor de atributo como uma classe css? Parece não funcionar para mim: <div class="my-section {{ model.event.eventDate ? 'half' : '' }}">- querer adicionar uma classe css aqui com base na condição.
Jordânia

114

Você pode usar a sintaxe abreviada a partir do Twig 1.12.0

{{ foo ?: 'no' }} is the same as {{ foo ? foo : 'no' }}
{{ foo ? 'yes' }} is the same as {{ foo ? 'yes' : '' }}

82

Suporte para o operador ternário estendido foi adicionado no Twig 1.12.0 .

  1. Se fooeco yesmais eco no:

    {{ foo ? 'yes' : 'no' }}
  2. Se fooecoar, então eco no:

    {{ foo ?: 'no' }}

    ou

    {{ foo ? foo : 'no' }}
  3. Se fooeco yesmais eco nada:

    {{ foo ? 'yes' }}

    ou

    {{ foo ? 'yes' : '' }}
  4. Retorna o valor de foose estiver definido e não nulo , nocaso contrário:

    {{ foo ?? 'no' }}
  5. Retorna o valor de foose estiver definido ( valores vazios também contam), nocaso contrário:

    {{ foo|default('no') }}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.