2016-01-26 7 views
0

Я программирую форму. Я использую Select2, чтобы пользователь мог выбрать несколько опций в теге select. Если есть еще одна ошибка, я перенаправляю пользователя обратно в форму и сохраняю значения, которые пользователь уже набрал или выбрал, так что ему не нужно заполнять всю форму снова.вывод данных старого массива данных с Twig

Все хорошо в остальном на полях, так как я могу получить информацию о вас, просто используя функцию request.post('input_name').

Когда дело доходит до этих множественных выборов, я знаю, что получаю массив. Как-то я знаю, что есть на самом деле ЗНАЧЕНИЯ размещены в массиве, если я просто сделать следующий тест:

{% if request.post('select2inputMultiple') %} 
    <p>Data have been posted from select2 multiple</p> 
{% endif %} 

Однако, если я пытаюсь показать (вывод) данных, как это:

{{request.post('select2inputMultiple')}} 

Он бросает следующая ошибка: An exception has been thrown during the rendering of a template ("Array to string conversion") Как я могу получить доступ к элементам этого массива?

Ну, это выглядит, что он работает, я пытаюсь с функцией Еогеасп как это:

{% if request.post('select2inputMultiple') %} 
    <p>Data have been posted from select2 multiple</p> 
    {% for single in request.post('select2inputMultiple') %} 
     value: {{single}} 
    {% endfor %} 
{% endif %} 

И выводит данные по желанию!

ответ

1

Предполагая, что ваш ввод имеет имя select2inputMultiple[], request.post('select2inputMultiple') - это массив (как указывает ошибка). Вы не можете отобразить массив на своей странице без посредника, чтобы преобразовать его в строку. Самый простой способ просмотра значения Twig - использовать метод dump, который соответствует var_dump. Таким образом, вы могли бы сделать

{{ dump(request.post('select2inputMultiple')) }} 

Предполагая, что вы выберите структуру, как это:

<select name="select2inputMultiple[]"> 
    {% for option in options %} 
     <option value="{{ option.id }}">{{ option.name }}</option> 
    {% endfor %} 
</select> 

Самый простой способ выбрать те опции из этого массива будет что-то вроде:

<select name="select2inputMultiple[]"> 
    {% for option in options %} 
     <option value="{{ option.id }}" 
      {% if option.id in request.post('select2inputMultiple') %} 
       selected 
      {% endif %} 
      >{{ option.name }}</option> 
    {% endfor %} 
</select> 
Смежные вопросы