Twig - 循环 returns 只有 1 个结果

Twig - Loop returns only 1 result

我正在尝试在 php 中使用 twig 并在此循环内进行循环, 我正在创建一个参数,其中包含来自数据库查询的记录。

问题是,当我在 HTML 文件中使用参数时,while 循环中只有 return 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 twig 渲染文件中的 HTML 参数:

{{ profile_widget_name }}

参数按照应有的方式呈现:

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

是的,$params 变量是一个数组,在它的配置文件中,它首先被用作 $params = array("..." => "...");然后我通过 $params["..."] = "...";

向这个数组添加东西

所以,我希望有人能帮助我。

提前致谢, 最好的问候。

目前,$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 %}