Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Mostrar datos de una base de datos

22 de octubre de 2013

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

#1

@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

22 octubre 2013, 15:04
#2

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

13 marzo 2017, 13:18
#3

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

27 abril 2017, 22:57
#4

@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

18 mayo 2017, 9:43