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

Actualizar el contenido de la plantilla mediante Ajax

18 de mayo de 2015

Saludos. Mi duda es la siguiente:

Estoy utilizando Symfony y Twig para plantillas. Tengo la plantilla layout que es la base, de la cual extiende las plantilla de la cabecera, sidebar y las que muestran el contenido.

Mi duda es cómo puedo actualizar (con ajax) el área del contenido sin actualizar el sidebar y la cabecera.

Gracias.


Respuestas

#1

No acabo de entender bien la pregunta, ya que no importa la tecnología que uses en el servidor (Symfony y Twig en este caso). Si quieres actualizar parte de la página mediante Ajax, sólo tienes que hacer peticiones Ajax y cambiar el contenido de los elementos HTML específicos dentro de la página.

Lo único que puedes tener en cuenta en el servidor es el método $request->isXmlHttpRequest() que permite saber si una petición es "normal" o realizada mediante Ajax, por si quieres cambiar el comportamiento en cada caso.

@javiereguiluz

19 mayo 2015, 8:49
#2

En sidebar se encuentra el menu navegación. Y solo se actualice la plantilla donde se carga el contenido.

@dariongg

19 mayo 2015, 15:20
#3

Te aconsejo que crees varias plantillas con los diferentes contenidos que desees mostrar con cada peticion Ajax. Esas plantillas tendrán dentro variables, luego puedes hacer que tus menus del sidebar ejecuten llamadas Ajax a un controlador que se va a encargar de obtener las variables necesarias para cada plantilla. Una vez que el controlador ejecute $this->render() esto generara el HTML necesario para añadirlo al bloque de contenido que has definido. Ejemplo:

$.post(Routing.generate('mostrar_contenido_pagina', { id: 1 }),
{'nombre': nombre}, function (respuesta, textStatus, jqXHR) {
    $('#contenido').html(respuesta);
});
/**
 * @Route("/mostrar_contenido_pagina/{id}", name = "mostrar_contenido_pagina")
 *
 */
public function mostrar_contenido_paginaAction()
{
    /* tu logica*/
    $this->render('@APBundle/Pagina/plantilla_pagina.html.twig', array(
        'datos'= $datos
    ));
}

Si te fijas en la llamada Ajax: $('#contenido').html(respuesta);, el elemento contenido será un <div> que tendrá ese id y se le adicionará el HTML que devuelta el render del controlador en cada caso.

Espero que te sirva.

@RoberRielo

19 mayo 2015, 21:28