2015-10-23 5 views
0

я должен объединить две переменные в одном, рядом с request.localeSymfony - Twig - Динамическая переменная - Как объединить две переменные в цикле

Я объясню вам:

У меня есть сущность по имени Lexicon с несколько поле: wordFr, wordEn, definitionFr, definitionEn

Я пытался сделать что-то подобное для замены Fr или En в соответствии с request.locale, но он не работает:

   {% set locale = '' %} 

      {% if app.request.locale == "fr" %} 
       {% set locale = 'Fr' %} 
      {% else %} 
       {% set locale = 'En' %} 
      {% endif %} 

      {% for wordList in wordsList %} 
       <tr> 
        <td>{{ wordList.word~locale }}</td> 
        <td>{{ wordList.definition~locale }}</td> 
       </tr> 
      {% endfor %} 

Как иметь {{ wordList.wordFr }} или {{ wordList.wordEn }} в соответствии с локалью (замените вар locale на Fr или En)? благодаря !

В то же время я сделал это, но это слишком долго, и повторы ...

   {% if app.request.locale == "fr" %} 
        {% for listeMots in listeMotsLexique %} 
         <tr> 
          <td>{{ wordList.wordFr }}</td> 
          <td>{{ wordList.definitionFr }}</td> 
         </tr> 
        {% endfor %} 
       {% else %} 
        {% for listeMots in listeMotsLexique %} 
         <tr> 
          <td>{{ wordList.wordEn }}</td> 
          <td>{{ wordList.definitionEn }}</td> 
         </tr> 
        {% endfor %} 
       {% endif %} 

ответ

5

Что вы хотите использовать функцию attribute Twig которая документированную here.

Он позволяет использовать имена динамических переменных. Вы должны сделать что-то вроде этого:

{{ attribute(wordList, 'mot'~locale) }} 

Вы в основном говорят, что вы хотите 'mot'~locale от wordList объекта

+0

Отлично! Это то, что мне нужно! спасибо – Zagloo

Смежные вопросы