2015-04-14 2 views
0

Я пытаюсь сделать цикл в php, используя twig и внутри этого цикла, Я создаю параметр, который содержит запись из запроса базы данных.Twig - Loop возвращает только 1 результат

Проблема заключается в том, что, когда я использую параметр в моем HTML-файл, он возвращает только 1 запись из цикла в то время, даже если есть 3 или 4 или даже больше ..

Это PHP код, который я есть:

public function getWidgetsByName($name) 
{ 
    global $params; 
    $get = $this->db->query("SELECT * FROM profile_items 
           WHERE category = 'widget' 
           AND username = '". $name ."'"); 
    if($get) 
    { 
      while($key = $get->fetch()) 
      { 
       $params["profile_widget_name"] = $key['name']; 
      } 
    } 
} 

И это параметр HTML в моем HTML веточке оказанного файл:

{{ profile_widget_name }} 

параметров при просто получить визуализации, как они должны быть оказаны:

echo $twig->render('app/views/'. $_REQUEST['p'] .'.html', $params); 

И да переменная $ PARAMS является массивом, в конфигурации это файл, он первый привыкает, как $ PARAMS = массив ("..." => "..."); и я добавляю вещи в этот массив, выполняя $ params ["..."] = "...";

Итак, я надеюсь, что кто-то может мне помочь.

Заранее спасибо, С наилучшими пожеланиями.

+0

Я изо всех сил, чтобы увидеть то, что происходит здесь. Что возвращается из базы данных? Где петля в Twig, которая не работает? Что вы ожидаете от этого? –

+0

Хорошо, например, я пытаюсь зациклиться на всех результатах, имеющих категорию виджета и имя пользователя, которое должно быть задано в функции. Например, у меня есть 3 результата с виджетами категории и именем пользователя «Проводник». Результаты, которые я должен получить, это: «profileWidget», «guestbookWidget» и «friendsWidget».Но проблема в том, что он возвращает только «friendsWidget» – DC20

+0

Вам нужно обновить свой вопрос с помощью кода Twig, который вы написали, того, что вы хотите выводить и что на самом деле выводится. На данный момент это не ясно. –

ответ

1

В настоящий момент значение $params["profile_widget_name"] - это всего лишь одна строка. Каждый раз, когда вы проходите цикл while, вы перезаписываете предыдущее значение ключа с текущим значением.

Итак, когда вы передаете $params в Twig, значение profile_widget_name - это значение name в последней строке базы данных, которая будет выбрана.

Я думаю, что вы хотите, чтобы значение profile_widget_name было массивом. Затем каждый раз, когда вы проходите цикл, в массив добавляется текущее значение name, а не его переписывание.

Вы можете сделать это, делая что-то вроде:

$params["profile_widget_names"][] = $key['name']; 

Сейчас в шаблоне Twig, вам нужно сделать что-то вроде:

{% for profile_widget_name in profile_widget_names %} 
    {{ profile_widget_name }} 
{% endfor %} 

Использование нескольких параметров

Если вы хотите, чтобы там было несколько параметров, вы можете сделать это:

$params["profile_widgets"][] = [ 
    'pos_x' => $key['pos_x'], 
    'name' => $key['name'], 
]; 

И в Twig:

{% for profile_widget in profile_widgets %} 
    Name: {{ profile_widget.name }} 
    Pos X: {{ profile_widget.pos_x }} 
{% endfor %}  
+0

Большое спасибо !!! Это помогло мне! – DC20

+0

Другой вопрос, что, если я, например, хочу, чтобы другой параметр находился в цикле for (profile_widget_pos_x)? Я сделал новый цикл, как {% для profile_widget_pos_x в profile_widget_positions_x%} {{}} profile_widget_pos_x {% ENDFOR%} Но проблема в том, что он отображает результаты, умноженные на 2 ... И я думаю, что потому что я сделал это для цикла внутри первого, но я не знаю, как это сделать по-другому ... – DC20

+0

@ DC20 Я обновил свой ответ. –