だから私はしばらくの間これを解決しようとしてきました.
PHP では、最初に if isset($var) and $var == something と言うだけで十分であり、存在しないものを比較しようとしても不平を言うことはありません。
明らかに、TWIG では十分ではありません。
では、なぜこれが機能しないのでしょうか。最初に if を実行して、entity.container が設定されているかどうかを確認し、設定されていない場合はそのブロックを通過しません。
とにかく、TWIGはすべてのコードを通過する必要があるようです。だから、私は常にコンテナ(entity.container)が設定されていないこのエンティティを持っているので、どうすればいいですか?このコードを実行すると、twig は、entity.container が存在しないときに entitiy.container.containerType に移動しようとする if ステートメントが 1 つあると不平を言うだけです。
{% if entity.container is defined %}
{% if entity.trash == false and entity.container.containerType.name =='Module' %}
<form action="{{ path('deleteContent', { 'id': entity.id }) }}" method="post" onsubmit="return confirm('Bekräfta att du vill radera detta innehåll? Detta går inte att ångra.')">
{{ form_widget(delete_form) }}
<button type="submit" style="color:red;">Radera permanent</button>
</form>
{% elseif entity.trash == false and entity.container.containerType.name !='Module' %}
<form action="{{ path('deleteContent', { 'id': entity.id }) }}" method="post">
{{ form_widget(delete_form) }}
<button type="submit" style="color:red;">Flytta till papperskorgen</button>
</form>
{% elseif entity.trash == true and entity.container != null %}
<form action="{{ path('restoreContent', { 'id': entity.id }) }}" method="post">
{{ form_widget(delete_form) }}
<button type="submit" style="color:red;">Återställ till ursprunglig plats</button>
</form>
{% else %}
För att återställa detta innehåll måste du först välja en plats för det.
{% endif %}
{% else %}
hehe
{% endif %}