我试图在使用twig并在此循环内部时使用php进行循环, 我正在创建一个包含数据库查询记录的参数。
问题在于,当我在HTML文件中使用参数时,它只返回while循环中的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 = array(" ..." =>" ...& #34);我通过$ params [" ..."] =" ...";
将数据添加到此数组中所以,我希望有人可以帮助我。
提前致谢, 最诚挚的问候。
答案 0 :(得分: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 %}