Estoy utilizando Zend Framework y les cuento mi problema.
Tengo una sección que muestra noticias: http://midominio.com/contenido/1 donde "contenido" es el controlador, "ver" es la acción(en la dirección se pasa de manera implícita) y el número es un atributo 'id' que representa el identificador de la noticia a visualizar.
En la acción 'ver' tengo lo siguiente:
Código PHP:
$contenido = new Application_Model_Contenido(); --donde $contenido es un objeto que guarda en sus atributos el título, contenido, fecha, etc. de la noticia que se va a visualizar.
Código PHP:
$sesion = new Zend_Session_Namespace('contenido');
$sesion->contenido = $contenido;
Hasta aquí todo guay.
En el view de la noticia(es decir, la página donde se muestra la noticia: http://midominio.com/contenido/1) tengo una imagen que enlaza a una dirección que genera un PDF del contenido:
Código HTML:
<a href="<?= $this->baseUrl() ?>/contenido/crearpdf"><div class="ContentTask" id="print" title="Versión para imprimir"></div></a>
Código PHP:
$sesion = new Zend_Session_Namespace('contenido');
$sesion->contenido->crearPdf();
¿Cuál es el problema?
Si abro dos páginas(o más) tal que primero visito http://midominio.com/contenido/1 y a continuación (en una ventana aparte) http://midominio.com/contenido/2 en la variable de sesión estará contenida SÓLO la información de la última noticia visitada, por lo tanto, al pulsar el botón para crear un PDF desde la ventana de la PRIMERA noticia se generará el PDF de la segunda.
¿Cómo lo soluciono?
Había pensado en crear un formulario y pasar los datos mediante POST a través de un formulario. Pero lo veo un poco tedioso pues tendría que maquetar de nuevo el diseño de la web para que quedara todo bien integrado.
También en crear el pdf haciendo así el enlace: http://midominio.com/contenido/crearpdf/1, pero esto provocaría volver a consultar los datos de la noticia en la base de datos y no veo una buena solución volver a hacer esto. También podría utilizar ese 'id' como el índice de un array de sesión que contenga objetos de noticias, pero veo absurdo ir llenando variables de sesión con información que se va a utilizar de media una vez o ninguna por sesión/usuario.
¿Ven alguna solución? Me gustaría pasar la info sin tener que enredar en el view de la noticia, me gustaría controlarlo todo desde el controlador(valga la redundancia).