Re: La plantilla twig no recibe los datos que se le pasan. (Aplicación Cupon - libro Javier Eguiluz)

541 views
Skip to first unread message

Jakala

unread,
May 20, 2013, 6:42:11 AM5/20/13
to symfo...@googlegroups.com
Buenas:

lo que te esta diciendo el error es que el objeto que has pasado (el $oferta) cuando ha llegado a twig es null. Por lo tanto, no puedes acceder a null.nombre...

Revisa en el controlador, antes del render, como obtienes $oferta. Quizas la llamada a la bbdd te esta devolviendo null (no encuentra la oferta) y por eso te da el erro en el twig.



AntonioSPR

unread,
May 20, 2013, 6:59:14 AM5/20/13
to symfo...@googlegroups.com
Hola, gracias por la respuesta.

El controlador es el  siguiente:

class DefaultController extends Controller
{
    public function portadaAction()
    {
        $em = $this->getDoctrine()->getManager();

        $oferta = $em->getRepository('OfertaBundle:Oferta')->findOneBy(array(
            'ciudad'            => 1,
            'fecha_publicacion' => new \DateTime('today')
        ));

        return $this->render(
            'OfertaBundle:Default:portada.html.twig',
            array('oferta' => $oferta)
        );
    }
}

He revisado la base de datos con phpMyadmin y los datos están correctos.

¿Cómo me podría hacer una llamada "de prueba" a la bbdd para ver donde cometo el error?


Eloy González Andueza

unread,
May 20, 2013, 7:19:18 AM5/20/13
to symfo...@googlegroups.com
Hola:
Si vas haciendo los ejemplos del libro poco a poco fíjate en la fecha de publicación para ver que hora te pone. Creo recordar que a mi me pasó algo parecido porque en la consulta  no había ninguna oferta que coincidiera con la hora minutos y segundos con new\DateTime("today").






--
--
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Google Groups.
Para publicar en este grupo, envía un email a symfo...@googlegroups.com
Para darte de baja, envía un email a symfony-es+...@googlegroups.com
El resto de opciones puedes encontrarlas en http://groups.google.com/group/symfony-es?hl=es
 
---
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a symfony-es+...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 

Jakala

unread,
May 20, 2013, 7:47:08 AM5/20/13
to symfo...@googlegroups.com
Buenas:

Es muy probable que sea algo de la fecha, como dice Pepe. Una forma de comprobarlo, podria ser ver un dump en el controlador. creo que la gente utiliza var_dump (yo personalmente utilizo el bundle ladybug, que da bastante informacion).

Antes del render, haz:

var_dump($oferta);

y asi ves que te ha devuelto...:wq

Leonardo Fernandez

unread,
May 20, 2013, 11:51:23 PM5/20/13
to symfo...@googlegroups.com

Recuerdo ke tuve el mismo problema y era debido a la configuración incorrecta del timezone en el php.ini
Me ayustaba la fecha de la tabla con el timezone y por eso no lo encontraba y la consulta daba null

Send from my Android

aprendizenlared

unread,
May 21, 2013, 4:32:07 AM5/21/13
to symfo...@googlegroups.com
YO creo que cambié el = de la fecha por un < o > y fueri... total la idea básica no es la sql

El lunes, 20 de mayo de 2013 12:23:41 UTC+2, AntonioSPR escribió:
Hola a todos.

Estoy siguiendo el libro de Javier Eguiluz.

Estoy creando la primera plantilla con twig. Cuando intento acceder a la aplicación, me sale el siguiente mensaje de error.

Impossible to access an attribute ("nombre") on a NULL variable ("") in OfertaBundle:Default:portada.html.twig at line 23


La línea 23 de la plantilla es la que hace referencia a {{ oferta.nombre }}

        <section class="descripcion">
            <h1><a href="#">{{ oferta.nombre }}</a></h1>
             {{ oferta.descripcion }}
            <a class="boton" href="#">Comprar</a>
        </section>


Creo que por algún motivo no consigo pasarle bien el array de datos a la plantilla, pese a que en el controlador lo tengo bien puesto:


        return $this->render(
            'OfertaBundle:Default:portada.html.twig',
            array('oferta' => $oferta)
        );


He visto que en este grupo hay varias personas que están siguiendo (o han seguido) el libro, y que están más avanzadas que yo, por lo que o bien no os a dado este problema, o bien  lo habéis sabido solucionar.

Agradecería cualquier ayuda.









AntonioSPR

unread,
May 21, 2013, 6:40:38 AM5/21/13
to symfo...@googlegroups.com

Muchísimas gracias a todos por las contestaciones.

El problema era que estaba haciendo una consulta que no devolvía ninguna fila. Tanto porque la fecha estaba atrasada como porque había cargado varias veces los datos y las clave primaria empezaba en el 164 y no en el 1.

Me había dejado las pestañas revisando el código symfony y la estructura de la bbdd  y si no es por vosotros no miro las fechas ni las claves.

Gracias de nuevo.

Jakala

unread,
May 24, 2013, 7:30:32 AM5/24/13
to symfo...@googlegroups.com
Buenas:
un detalle, todo esto lo haces cargando los fixtures???

si es asi, debes tener en cuenta ejecutar el comando con el parametro --purge-with-truncate, para que te inicialice los valores correctamente..


AntonioSPR

unread,
May 25, 2013, 6:34:19 AM5/25/13
to symfo...@googlegroups.com
Con todo el respeto para los programadores de Symfony: la opción --purge-with-truncate no vale ni para estar escondida.

Usando "--purge-with-truncate" no se pueden borrar las tablas que tengan dependencias entre ellas (algo que curiosamente tampoco se puede hacer desde phpMyAdmin)

La solución que encontré aquí: https://github.com/javiereguiluz/Cupon/issues/76#issuecomment-13127442 consiste en borrar el esquema de la bbdd y volver a crearlo.

Saludos.

PD: Probablemente "--purge-with-truncate" sí funciona y soy yo el que no sabe usarlo correctamente. :-(

Jakala

unread,
May 25, 2013, 5:18:02 PM5/25/13
to symfo...@googlegroups.com
A mi me pasaba lo mismo, pero segun tengo entendido el problema del purge-with-truncate se trata de un problema de mysql y no de symfony.

A partir de la versión que viene de base en ubuntu 12.04, la instruccion TRUNCATE ha cambiado internamente su funcionamiento y da esos problemas.
Para versiones anteriores no hay problema

En cualquier caso, otra forma de solucionarlo es sobreescribir el comando doctrine:schema:update (o hacer uno nuevo heredando del anterior) en el que añadir las instrucciones de set_foreign_keys a 0, consulta y luego set_foreign_keys a 1.


Allfarid Morales García

unread,
Mar 13, 2014, 3:08:48 AM3/13/14
to symfo...@googlegroups.com
Bueno, ya solucioné lo de la ciudad pero no me queda lo de la fecha.

Ya actualicé uno de los registros de mi BD a la fecha de hoy, pero sigue dándome null. En cambio si sustituyo 'today' por el datetime exacto '2014-03-13 00:59:59' funciona sin problemas.

¿Cómo lo arreglaste tú?
Reply all
Reply to author
Forward
0 new messages