Estoy trabajando en un sitio que internamente trabaja a base de Ajax para evitar estar recargando el sitio entero mas a aparte es necesario ya que se mantiene una conexión "persistente" via NodeJS por lo cual es imperativo evitar estar reconectando, el "problema" es que el usuario puede acceder a cualquier parte del sitio directamente tecleando la url (uso pushstate y hashbang) por lo cual también es importante que si la petición es directa por el usuario (accediendo directamente a la URL) ZF sea capas de renderizar el layout y sus vistas, sin embargo, si es una petición via Ajax ZF debe evitar que se renderize el layout y aquí es donde comienza mi odisea...
Cada vez que se hace una petición via Ajax debo deshabilitar el layout, mas aparte, debo cambiar la vista del action al que se le esta haciendo la petición ya que debo generar un XML que consta del contenido HTML (el contenido normal vamos), mas aparte verificar si es necesario cargar algún CSS externo para la correcta visualización del código HTML generado, para que quede mas claro dejo un ejemplo...
view script...
Código HTML:
Ver original
Si es una petición normal (no ajax) deberá visualizarte tal cual, sin cambios, pero si es una petición ajax deberá mostrarse de la siguiente manera...
Código XML:
Ver original
<?xml version="1.0" encoding="UTF-8"?> <data> <content> <![CDATA[ <div id="contenido"> <p>Este es un div de prueba</p> </div> ]]> </content> <scripts> <css>/css/archivo.css</css> </scripts> <title> Titulo del action </title> </data
La forma en que pensé solucionar esto es creando un view helper que recogiera el contenido del view script y dependiendo de una variable boolean mostrar de una u otra forma, ejemplo....
view script...
Código PHP:
Ver original
$content = <<<HTML <div id="contenido"> <p>Este es un div de prueba</p> </div> HTML; echo $this->Ajax($content,$this->ajax);
lo que hace el view helper es que si $this->ajax es true genera el XML, si es false solo hace un echo directo a $content, lo que ahora quiero/necesito es automatizar por lo tanto evitar tener que estar metiendo el código del view script en una variable, y estar agregando manualmente el view helper a cada action, por lo tanto estaba pensando crear un action helper y en el metodo postDispatch obtener el código ya generado del view script y emular el trabajo del view helper que ya tengo hecho, la otra manera era crear un view personalizado con zend_view_abstract, pero realmente no se que es mejor o si lo que planteo es viable...
Agradezco cualquier ayuda/consejo que me puedan dar