2015-09-22 4 views
1

Я реализую свой первый проект Twig. У меня есть база данных MySQL. Он включает таблицу, в которой каждая запись является документом. Есть поля Title, Number и Description.Показать результаты запроса MySQL в шаблоне Twig

Без Twig было довольно просто запросить все результаты и вывести их на стол. Тем не менее, мне сложно получить запрос к Twig. Это похоже на базовую задачу, но я не нашел подобных примеров в документации Twig или в поиске.

Шаблоны Twig очень похожи на шаблоны Django/Jinja, с которыми я знаком. Мой шаблон:

{% block Content %} 

<table border='1' width=100%> 
    {% for i in queryResult %} 
    <tr> 
     <td> {{i.Title}} </td> 
    </tr> 
    {% endfor %} 
</table> 
{% endblock %} 

РНР для этой точки зрения выглядит следующим образом:

$connection=mysql_connect (credentials) or die ('Cannot connect to database:' . mysql_error()); 
    $mydb=mysql_select_db(database); 

$sql = query; 

$query = mysql_query($sql); 

$result = mysql_fetch_assoc($query); 

echo $twig -> render('all_reports.html', array('queryResult'=> $result)); 

Который кажется правильным. Сценарий должен выполнить SQL-запрос, вернуть набор результатов в виде массива и затем отправить результат в шаблон. Шаблон должен перебирать все элементы массива (один элемент для каждой строки) и отображать их в таблице.

На самом деле происходит то, что отображаются три строки, все пробелы. Моя интерпретация заключается в том, что шаблон видит три элемента в массиве (по одному для каждого поля) вместо элемента для каждой записи в результате запроса. Они пусты, потому что в каждом поле нет поля Title. Но я не понимаю, что бы это исправить.

+1

Just loop on $ result, чтобы поместить все данные в новый массив $ datas, а затем передать $ datas в шаблон? – Armage

ответ

2

Попробуйте это в PHP:

while ($row = mysql_fetch_assoc($query)) { 
    $results[] = $row; 
} 
echo $twig -> render('all_reports.html', array('queryResult'=> $results)); 

Проблема заключается в том, что вы делаете 1 вызов mysql_fetch_assoc который получит первую строку (который, кажется пустым в вашем случае). Создайте массив и отправьте его в шаблон.

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