Aquí dejo el controlador que envía los datos a la plantilla "portada" aunque probé tambien enviarlos a la plantilla de "lista_avisos" extendiendo luego a "portada" mediante el metodo load() de js. pero las variables globales del template no toman los los valores enviados desde el controlador (creo que los envía pero solo a la capa que renderiza y no al total.
Código PHP:
Ver originalpublic function avisosPorLocalidadAction($localidad,$rubro){
$em = $this->getDoctrine()->getManager();
$loc = $em->getRepository("AvisosOpcionesBundle:Localidades")->findOneBySlug($localidad);
$rub = $em->getRepository("AvisosOpcionesBundle:Rubros")->findOneBySlug($rubro);
//busco en repositorio avisos por filtro localidad y rubro
if($localidad && $rubro){
if($loc && $rub)
$avisos = $em->getRepository("AvisosAvisosBundle:Avisos")->findByLocalidad($local,$rub);
else
throw $this->createNotFoundException('Opss!! la página no está disponible por el momento.');
}
//busco avisos solo por filtro localidad
if($local && !$rub){
if($local)
$avisos = $em->getRepository("AvisosAvisosBundle:Avisos")->findByLocalidad($local,null);
else
throw $this->createNotFoundException('Opss!! la página no está disponible por el momento.');
}
$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate($avisos, $this->get('request')->query->get('page',1),20);
return $this->render('AvisosAvisosBundle:Default:portada.html.twig', array('pagination' => $pagination, 'localidad' => $local,
'rubro' => $rub));
}
Aquí esta el template donde se mostraría un menu lateral y el espacio de los avisos a renderizar con ajax.
Código Twig:
Ver original{# template portada #}
{% extends '::base.html.twig' %}
{# variables globales que deberían capturar datos del controlador para pasar a la barra lateral y mostrar como informacion de filtros en recuadro #}
{% set localidad = app.request.get('localidad') %}
{% set rubro = app.request.get('rubro') %}
{% block stylesheets %}
{{parent()}}
{% endblock %}
{% block title %}Avisos | Portada{% endblock %}
{% block id 'portada' %}
{% block aside %}
{# Aquí iría el lateral con un menú de opciones de rubros y otro de localidades ademas de un recuadro para mostrar los filtros seleccionados #}
{% include ':includes:aside.html.twig' %}
{% endblock %}
{% block article %}
{{parent()}}
{# aquí se incluiría la capa con el listado de avisos,
con ajax intentaría renderizar esta zona y que el block aside se mantenga sin recargar salvo el recuadro de filtros que debería renderizar junto con este listado para actualizar el filtro seleccionado,
he probado renderizar con load() de js pero extendiendo en vez de incluir el template de lista_avisos pero las variables globales no capturan los datos del controlador #}
{%include 'AvisosAvisosBundle:Default:lista_avisos.html.twig' %}
{% endblock %}
{% block javascripts %}
{{parent()}}
{% endblock %}
El problema es que tengo que renderizar en realidad dos espacios, el espacio de los avisos y el del recuadro en la barra lateral donde muestra los datos seleccionados como filtros (estilo mercadolibre) y entiendo que si envio por el controlador me va a dirigir a una sola direccion que sería la de "lista_avisos" pero luego debería renderizar el cuadro de filtros en el lateral.