¿Es una buena idea combinar un marco JS Ajax / UI (ext, jquery-ui) con un framework MVC PHP (zend, symfony)?

Me doy cuenta de que esta es una pregunta muy genérica, pero creo que realmente no estoy buscando una respuesta definitiva. Al ser nuevo en los frameworks de PHP, me está costando entenderlo.

Los marcos de JavaScript, especialmente con las extensiones de interfaz de usuario, parecen tener su tipo de enfoque tipo MVC al separar su código JS de su diseño. Parece que sería confuso usar un framework MVC adicional en el back-end.

¿Esto se hace comúnmente para aplicaciones principalmente impulsadas por AJAX? ¿Hay una forma aceptada / común de hacerlo?

Un ejemplo rápido de cómo puede encajar en una aplicación de Zend Framework (y esto es de una aplicación de demostración que escribí hace unos meses):

  • Use el Marco de MCV para construir un sitio totalmente funcional (que funciona sin javascript).
  • Modifique el controlador para comprender la diferencia entre una solicitud ‘normal’ y una solicitud AJAX (el cambio de contexto de Zend lo hace fácil).
  • Agregue Javascript (en mi ejemplo jQuery) para reemplazar limpiamente los enlaces con eventos AJAX.

Al final, la aplicación PHP sabe que una solicitud AJAX necesita una respuesta AJAX (menos ancho de banda, menos procesamiento, solo ‘fragmento’ HTML o JSON), pero una solicitud normal necesita una página entera generada.

Básicamente, solo está usando AJAX para solicitar (o actualizar, o agregar datos) la plantilla ‘vista’, sin tener que procesar todo el diseño. El Zend Framework Context Switch Action Helper puede ayudar a que esto tenga más sentido.

Vale la pena mencionar que el cambio de contexto funciona bien al hacer que una solicitud esté disponible en diferentes formatos: HTML / XML, CSV, etc.

Es el siguiente paso lógico de MVC, en mi opinión. Ya separas tu acceso a los datos (modelo), desde la lógica de negocios (controlador), desde la salida (vista); ahora solo estás separando el comportamiento del marcado.

En mi experiencia, funciona muy bien con las características de AJAX, ya que solo necesita cambiar su Vista para devolver la información necesaria como JSON o XML.

Es una muy buena idea, ya que los frameworks de PHP MVC están agrupados con frameworks JS :

  • Zend viene con Dojo
  • Symfony viene con Prototype y script.aculo.us
  • CakePHP viene con Prototype y script.aculo.us o jQuery (versión futura)

enlace actualizado, gracias “Exception e”.

Personalmente estamos usando Zend (MVC y otros aspectos del framework Zend) con jquery y funciona muy bien. Como no toda su interacción de la página html será a través de jquery (ajax), se recomienda encarecidamente una architecture MVC estándar. Ciertamente quiere las capas de su architecture (separando el modelo y la vista) y tener jquery es (al menos para mí) y una “característica” adicional de poder ejecutar su MVC de forma asíncrona.

Parece que sería confuso usar un framework MVC adicional en el back-end.

No hay necesidad de preocuparse por eso. Puedes usar zend framework y extjs por ejemplo de forma independiente mientras desarrollas, son productos realmente independientes. Las dependencias entre estas capas deben mantenerse simples . No hay necesidad de preocuparse.

El acoplamiento es bajo, solo necesita configurar los medios para consultar datos desde su aplicación de servidor y hacer lo que quiera con el lado del cliente. La línea entre estos sistemas es simple y no te confundirá.
Extjs realmente no tiene una estructura de mvc. Ofrece componentes ricos predefinidos. Pega estos componentes con alguna configuración y configura las direcciones URL de su servidor desde donde se pueden obtener los datos.

¿Cómo haces que tu zend mvc responda a ajax? Le recomiendo que vea la presentación sobre zf ↔ ajax del líder del proyecto de zf.