Estoy tratando de mostrar en una tabla los datos obtenidos desde una base de datos MySQL con Doctrine. La verdad que leí la guía de Symfony de esta página, seguí los pasos, pude realizar la consulta a la base de datos y todo.
Pero el problema está en que no puedo mostrar los datos en la plantilla, mediante Twig, ni mediante una respuesta generada por el controlador.
Si me pueden ayudar, sería de mucha ayuda. Gracias.
Respuestas
@Enzo_B16, si has realizado bien la consulta a la base de datos, ya has hecho lo más difícil. Imagina que tienes un controlador llamado DefaultController
y que la acción se llama indexAction
. Después de la consulta, tienes que pasar los resultados a la plantilla de la siguiente manera:
class DefaultController extends Controller { public function indexAction() { // Obtener primero los datos de la base de datos // con una consulta de Doctrine $datos = ... return $this->render('AcmeBundle:Default:index.twig', array( 'datos' => $datos )); } }
Y para mostrar los contenidos de la variable $datos
en la plantilla Twig, tienes que utilizar la etiqueta for
:
<table> {% for dato in datos %} <tr> <td>{{ dato.id }}</td> ... </tr> {% endfor %} </table>
El problema puede estar en que la consulta a la base de datos no devuelva ningún resultado. En ese caso, lo mejor es que añadas un else
a la etiqueta for
anterior:
<table> {% for dato in datos %} <tr> <td>{{ dato.id }}</td> ... </tr> {% else %} <tr> <td>No hay resultados.</td> </tr> {% endfor %} </table>
@javiereguiluz
Tratando de entender un poco la respuesta de Enzo_B16, no comprendo el ciclo {% for dato in datos %}
, ¿quién es dato
? ¿será un campo de la tabla datos? gracias
@spedrot3
Buenas a mi me pasa algo parecido, hago exactamente lo mismo que el pero me salta con que la variable del html.twig dice que no existe, cuando en el controller si se lo estoy indicando
@VerdejoLiam
@spedrot3 dato es como la variable i de un for (for i in j<10)
@VerdejoLiam Seguramente te falte $datos = $this->getDoctrine()->**getManager()**->getRepository('Bundle:class')->findAll();
@XxbazingaxX