0

だから私はしばらくの間これを解決しようとしてきました.

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 %}
4

1 に答える 1

3

あなたの場合、entity.containerは定義されていますが設定されておらず、null である可能性があると思います。定義済みの変数と空またはヌルの変数には違いがあります。

したがって、最初の if ステートメントがチェックされ、内部のロジックを解析できます。

変数が設定されているかどうかを確認するには、使用する必要があります

{% if entity.container %}

または単に「is not null」を使用し、

{% if entity.container is not null %}

どちらも変数を定義する必要があるという条件で、そうしないと、「「エンティティ」のアイテムまたはオブジェクト「container.whateverYouWant」が存在しません...」というエラーが表示されます。

于 2012-11-03T23:56:13.763 に答える