如何在Twig模板中迭代findBy Doctrine查询的数组结果

时间:2014-12-14 01:06:24

标签: php symfony doctrine-orm twig

我的控制器中有这个代码:

$entProductosSolicitud = $em->getRepository("AppBundle:ProductoSolicitud")->findBy(array(
    'solicitud_usuario' => $entSolicitudUsuario->getId()
));

我将其传递给视图:

'entProductosSolicitud'=> $ entProductosSolicitud

这将产生如下输出:

array:1 [▼
  0 => ProductoSolicitud {#6303 ▼
    #producto: Producto {#6318 }
    #solicitud_usuario: SolicitudUsuario {#4525 }
    #condicion_producto: CondicionProducto {#6320 }
    #finalidad_producto: FinalidadProducto {#6324 }
    #lote: 11
    #procedencia_producto: ProcedenciaProducto {#6326 }
    #productoCodigosArancelarios: PersistentCollection {#6332 }
    #id: 5
  }
]

这是正确的,因为我可以拥有多个实体,因此findBy是用于查找实体的正确方法。现在我需要迭代每个实体属性,以便我可以访问Producto名称和ID为item.getProducto.getName()item.getProducto.getId(),但由于var entProductosSolicitud有一个数组,所以我不知道如何迭代它。我试过这个:

{% for key, value in entProductosSolicitud %}
<tr>
    <td><input type="checkbox" id="{{ value[key].getProducto.getId }}" name="" /></td>
    <td>{{ value[key].getProducto.getNombre }}</td>
    <td></td>
</tr>
{% endfor %}

但这不起作用,如何迭代entProductosSolicitud以便在数组结果中访问它们的属性?

1 个答案:

答案 0 :(得分:2)

Twig和Symfony在这里展示了迭代一组对象的几个例子:

http://twig.sensiolabs.org/doc/tags/for.html

http://symfony.com/doc/current/book/templating.html#templates

你所要做的就是:

{% for item in entProductosSolicitud %}
    <tr>
        <td><input type="checkbox" id="{{ item.getProducto.getId }}" name="" /></td>
        <td>{{ item.getProducto.getNombre }}</td>
        <td></td>
    </tr>
{% endfor %}