Если у меня есть блок кода, как это:Есть ли более простой способ писать многострочный код в шаблонах Twig?
{% if app.user is defined %}
{% set isOwner = user.isEqualTo(app.user) %}
{% else %}
{% set isOwner = false %}
{% endif %}
Можно ли писать без упаковки каждой строки в тегах, как это?
{% if app.user is defined
set isOwner = user.isEqualTo(app.user)
else
set isOwner = false
endif %}
Приведенный выше код явно не работает, поскольку нет терминаторов линий. Добавление ;
тоже не работает.
Если есть много линий, все становится очень сложным.
Update:
Хотя ответ DarkBee является способом сократить синтаксис, опасайтесь передавая нуль к способу, который может быть ожидающим объект определенного класса. Окончательный вариант кода, который мы в конце концов пошел с не намного лучше, чем оригинальный вопрос, но по крайней мере это один меньше линия:
{% set isOwner = false %}
{% if app.user is not null %}
{% set isOwner = user.isEqualTo(app.user) %}
{% endif %}
Таким образом, логический флаг всегда устанавливается и метод никогда не принимает нулевое объект.
Кроме того, если вы беспокоитесь о дополнительных пробелах, ползущих в ваш HTML (в результате отступа), лучший способ избежать этого - обернуть весь фрагмент кода в тегах {% spaceless %}...{% endspaceless %}
. не
@DarkBee Это тоже очень интересно! – aalaap
@DarkBee Я бы хотел, чтобы вы разместили это как ответ! – aalaap
Будьте осторожны, что вы хотите за – DarkBee