2014-11-19 3 views
0

В настоящее время я пытаюсь сравнить значение каждого сохраненного объекта и упорядочить результаты в определенных разделах. Я не могу для жизни меня найти, как сравнить переменную с строкой, используя веточку. Все, что я пробовал, за исключением следующего кода, который вместо сбоя просто пропускает IF и показывает ELSE. Я предполагаю, что у меня все получилось неправильно, но в документации Twig нет упоминаний о том, как это сделать (я думаю), и я начинаю думать, что все пойдет по-другому. Может быть, я должен делать это в контроллере?Сравнение значения для строки IF/FOR Statement

{% for product in entity.product %} 
    {% if product.dish.DishCat == 'Starter' %} 
     <h3>Starter</h3> 
     <p>{{ product.dish }}</p> 
    {% elseif product.dish.Dishcat == 'Main'%} 
     <h3>Main</h3> 
     <p>{{ product.dish }}</p> 
    {% elseif product.dish.Dishcat == 'Desert'%} 
     <h3>Desert</h3> 
     <p>{{ product.dish }}</p> 
    {% else %} // Always just get's to here. 
     <p> FAIL!</p> 
     <p>{{product.dish.DishCat}} {{product.dish.id}}</p> //I print 'product.dish.DishCat' to ensure It's actually got a value which it does... 
    {% endif %} 
{% endfor %} 

Result =

СБОЙ! Сеть 2

FAIL! Стартеры 0

FAIL! Стартеры 1

FAIL! Пустыни 3

FAIL! Сеть 4

Любое предложение очень приветствуется.

+0

Фактически «пустыни»! = «Пустыня», а также «Сеть»! = «Главная», чтобы вы каждый раз сравнивали разные строки. – ponciste

+0

Также вероятно, что 'dish' - это объект, поэтому вам может понадобиться сделать что-то наподобие' {{product.dish.name}} ' – geoB

+0

@geoB. Была ли моя глупая ошибка пропускать 's' с конца строка:/неловко. Product.Dish имеет метод _toString(), возвращающий «Имя», поэтому .name не требуется. – Doug

ответ

2

Результаты заканчиваются символом 's', в то время как условные операторы этого не делают. Попытайтесь:

{% for product in entity.product %} 
    {% if product.dish.DishCat == 'Starters' %} 
     <h3>Starter</h3> 
     <p>{{ product.dish }}</p> 
    {% elseif product.dish.Dishcat == 'Mains'%} 
     <h3>Main</h3> 
     <p>{{ product.dish }}</p> 
    {% elseif product.dish.Dishcat == 'Deserts'%} 
     <h3>Desert</h3> 
     <p>{{ product.dish }}</p> 
    {% else %} // Always just get's to here. 
     <p> FAIL!</p> 
     <p>{{product.dish.DishCat}} {{product.dish.id}}</p> 
     //I print 'product.dish.DishCat' to ensure It's actually got a value which it does... 
    {% endif %} 
{% endfor % 

Я думаю, вы должны попытаться исправить переменные и не позволить всем им заканчиваться символом 's'.

+0

Проклятье, как будто я потратил это долго, пытаясь найти решение, и все время у меня было все правильно, за исключением этого. Почувствуй себя настоящим идиотом ... Спасибо, что указали мне. – Doug