2016-01-16 3 views
0

Ситуация: Мне нужно сравнить значение переменной JS с значением переменной Twig, внутри функции jQuery или каким-либо образом получить доступ к определенному объекту из массива Twig на основе заданного идентификационного номера.Как сравнить значение ветви с значением JS?

Код, который описывает ситуацию:

  var id = ...; 
      {% for user in userlist %} 
      {% if user.id == id %} 
       var userInfo = $.parseJSON({{ user }}; 
      {% endif %} 
      {% endfor %} 

      $('#username-field').html(userInfo['username']); 
      ... 

или что-то похожее на это (если ее вообще возможно):

  var id = ...; 
      var userInfo = $.parseJSON({{ userlist|findByField('id', id }}; 

      $('#username-field').html(userInfo['username']); 
      $('#title-field').html(userInfo['title']); 

Проблема: Поскольку Twig не в состоянии получить доступ значение JS, Я понятия не имею, как разместить какой-либо заполнитель внутри веток {% ...%}.

Было бы неплохо получить доступ к выбранному объекту из коллекции, которая уже отправлена ​​по запросу шаблону Twig, вместо создания нового запроса Ajax, чтобы получить конкретный объект еще раз от контроллера.

ответ

2

Twigсервер-сервер шаблон двигатель. К сожалению, вы не можете сравнить переменные завихрения и переменные javascript. Поэтому вам следует передать важную переменную id со стороны сервера. Итак, userlist и id должны быть переменными пруда.

{% for user in userlist %} 
{% if user.id == id %} 
    var userInfo = {{ user.username|json_encode|raw }}; // or {{ user.username|raw }} 
{% endif %} 
{% endfor %} 

$('#username-field').html(userInfo); 
+0

Но проблема в том, что - {% if user.id == id%} строка, а не дальнейшее использование выбранного объекта. – baka1408

+0

получил. Проверьте обновленные рекомендации – RomanPerekhrest

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