在 TWIG 中渲染多维数组


Render multi-dimensional arrays in 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中应该做什么?你能给我一个可以工作的代码示例吗?我看了这个答案,但没有设法应用给定的指导如何从 Twig 中的多维数组中获取值?

$user

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

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

并在模板中.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 %}