在TWIG中渲染多维数组

时间:2015-03-15 15:50:59

标签: php arrays symfony multidimensional-array twig

我通过3个表(“用户”,“客户端”,“帐户”)获取关联对象。 “用户”与“客户”具有一对多的关系,“客户”与“帐户”具有一对多的关系。我使用以下代码获取一个特定“用户”的所有“帐户”:

$qb = $this->getDoctrine()->getManager()->createQueryBuilder()
->select('u, c, a')
->from('AcmeUserBundle:User', 'u')
->leftJoin('u.clients', 'c')
->leftJoin('c.accounts', 'a')
->where('u.id = :id');

$user = $qb->getQuery()
->setParameter('id', $id)
->getOneOrNullResult();

我将$ user数组传递给TWIG模板但我找不到正确的循环来检索“$ user”数组中包含的所有帐户。实现这一目标的最佳方法是什么?在控制器中应该做什么与​​在TWIG中应该做什么?你能给我一个有用的代码示例吗?我查看了这个答案,但没有设法应用给定的指导How to get values from a multidimensional array in Twig?

1 个答案:

答案 0 :(得分:0)

$user数组不是一个单独的对象,这可能是你无法循环它的原因。您可以尝试改为

$users = $qb->getQuery()
->getlResults();

$twig->render('template.twig', array('users' => $users));

并在template.twig

{% for user in users %}
{{ dump(user) }}
{% endfor %}

有关转储的更多信息:http://twig.sensiolabs.org/doc/functions/dump.html

然后可能:

{% for user in users %}
<h1>User: {{ user.id }}</h1>
list clients:<br/>
    {% for client in user.clients %}
    <div>
       <h2>Client: {{ client.id }}</h2>
       {{ dump(client) }}
       List accounts:<br/>
       {% for account in user.accounts %}
       <div>
          <h3>Account: {{ account.id }}</h3>
          {{ dump(account) }}
       </div>
       {% endfor %}
    </div>
    {% endfor %}
{% endfor %}