Twig不会在对象中显示数据

时间:2013-06-14 11:06:23

标签: php doctrine twig

我正在尝试使用Twig来显示一个简单的Doctrine 2实体对象列表。使用DQL查询中未触及的结果提取对象。 PHP代码是这样的:

/*
 * I know the query in the Repository class works as I get the correct objects
 * from the method and can iterate through them with foreach in PHP, displaying
 * data from the object through getters, like ->getId()
 */
$received = $repo->getReceived($id);

/*
 * This appears to work, the variables are assigned correctly.
 */
echo $template->render(array("received" => $received, "first" => $received[0]));

Twig模板包含:

{% for item in received %}
    <li>Item: {{ item.id }}, {{ first.id }}</li>
{% endfor %}

奇怪的是,twig正确地遍历接收到的数组,数组中有三个对象,有三行输出但是当作为item.id访问时,id(或任何其他成员)不会出现但是第二个输出first.id正确显示。

我应该看到的是:

Item 1, 1
Item 2, 1
Item 3, 1

但相反,我看到了:

Item , 1
Item , 1
Item , 1

我尝试了不同的变体来获取输出但到目前为止还没有任何工作,item.getId,item.getId()。

我在这里缺少什么想法?

编辑转储输出

{{dump(received)}}返回以下内容:

array(3) {
  [0]=>
  object(Received)#219 (6) {
    ["id":"Received":private]=>
    int(1)
  ... snip ...
  }
  [1]=>
  object(Received)#208 (6) {
    ["id":"Received":private]=>
    int(2)
  ... snip ...
  }
  [2]=>
  object(Received)#210 (6) {
    ["id":"Received":private]=>
    int(3)
  ... snip ...

我把它剪下来,这是三个完整的Doctrine实体对象,所以它们在数组中并且看起来正确。

1 个答案:

答案 0 :(得分:0)

我终于找到了解决这个问题的办法,虽然我无法理解为什么我需要这样做。我更改了数组以包含一组数组而不是对象,但这也不起作用。

然后我创建了一个替代数组,用于测试具有完全相同的结构,并且该数组工作没有任何问题。任何人都知道什么可能导致一个阵列工作而另一个阵列失败?两者都是二维数组。

所以我最终得到的是我使用二维数组并将树枝代码更改为:

{% for item in received %}
    <li>Item: {{ attribute(item, 'id') }}</li>
{% endfor %}

由于某种原因,需要attribute(),虽然我之前尝试过但是然后Twig抱怨了attribute()不存在。

希望这会对其他人有所帮助。