如果我有這樣的代碼塊:有沒有一種方法可以在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 %}
上面的代碼顯然不起作用,因爲沒有行結束符。添加;
也不起作用。
如果線條很多,事情會變得非常複雜。
更新:
雖然DarkBee的回答是縮短語法,警惕傳遞null到可以期待一個特定的類的對象方法的方式。我們最終與去代碼的最終版本比原來的問題也不遑多讓,但至少少了一個行:
{% set isOwner = false %}
{% if app.user is not null %}
{% set isOwner = user.isEqualTo(app.user) %}
{% endif %}
這樣,布爾標誌總是設置和方法從未收到null目的。另外,如果您擔心會有額外的空間蔓延到您的HTML中(作爲縮進的結果),那麼避免這種情況的最好方法是將整段代碼包裝到{% spaceless %}...{% endspaceless %}
標記中。
@DarkBee這也很有趣! – aalaap
@DarkBee我希望你已經發布了這個答案! – aalaap
小心你想要什麼 – DarkBee