Table of Contents : El manual

Estructura de CakePHP

CakePHP incluye clases Contralor [Controller], Modelo [Model], y Vistas [View], pero además incluye algunas otras clases y objetos que hacen que el desarrollo en MVC sea un poco más rápido y más agradable. Componentes [Components], Comportamientos [Behaviors], y Ayudantes [Helpers] son clases que proporcionan extensibilidad y reusabilidad para agregar funcionalidad rápidamente a las clases MVC base en sus aplicaciones. Por ahora vamos a mantenernos en un nivel más alto, así que busque los detalles sobre la forma de utilizar estas herramientas más adelante.

Extensiones de los Controladores

Un componente es una clase que ayuda en la lógica del controlador. Si tiene alguna lógica que desea compartir entre controladores (o aplicaciones), un componente suele ser una buena elección. A modo de ejemplo, la clase del núcleo EmailComponent, hace que la creación y envío de mensajes de correo electrónico sea tan sencillo como chasquear los dedos. En lugar de escribir un método en un controlador que realize esta lógica, puede empaquetarla en un componente para que pueda ser compartida.

Los Controladores también están equipados con callbacks. Estas llamadas se encuentran disponibles para su uso, sólo en caso de que necesite insertar alguna lógica entre las operaciones fundamentales de CakePHP. Las Callbacks disponibles incluyen:

  • beforeFilter(), ejecutada antes de cualquier acción del controlador
  • beforeRender(), ejecutada después de la lógica del controlador, pero antes de la vista se renderize
  • afterFilter(), ejecutada después de toda la lógica del controlador, incluido el renderizado de la vista. No hay diferencia entre afterRender() y afterFilter() a menos que haya llamado a render() en su controlador y haya incluido alguna lógica después de esa llamada.

Extensiones de las Vistas

Un ayudante [Helper] es una clase que ayuda en la lógica de la vista. Así como un componente es utilizado entre varios controladores, los ayudantes [helpers] permiten acceder a la lógica de presentación y compartirla entre varias vistas. Uno de los ayudantes del núcleo, el AjaxHelper, permite hacer peticiones Ajax dentro de las vistas de manera mucho más fácil.

La mayoría de las aplicaciones tienen partes de código de vista que se utilizan repetidamente. CakePHP facilita la reutilización de código de las vistas con diseños [layouts] y elementos [elements]. Por defecto, todas las vistas renderizadas por un controlador se colocan dentro de un diseño [layout]. Los elementos se utilizan cuando pequeños fragmentos de contenido deben ser reutilizados en múltiples vistas.

Extensiones de los Modelos

Del mismo modo, los Comportamientos [Behaviors] son formas de añadir funcionalidad común entre los modelos. Por ejemplo, si almacena datos de los usuarios en una estructura de árbol, puede especificar que su modelo de usuario se comporte como un árbol, y obtener libre funcionalidad para eliminar, añadir, y mover nodos en la estructura de árbol subyacente.

Los modelos también cuentan con el apoyo de otra clase llamada DataSource (Origen de datos). Los DataSources son una abstracción que permite a los modelos manipular diferentes tipos de datos en forma consistente. Si bien la principal fuente de datos en una aplicación CakePHP es a menudo una base de datos, puede escribir DataSources adicionales que le permitan a sus modelos representar canales RSS, archivos CSV, entradas LDAP, o eventos iCal. Los DataSources le permiten asociar registros de diferentes fuentes: en lugar de limitarse sólo a uniones [joins] SQL, los DataSources le permiten decirle a su modelo LDAP que está asociado a muchos eventos iCal.

Así como los controladores, los modelos también incluyen callbacks:

  • beforeFind()
  • afterFind()
  • beforeValidate()
  • beforeSave()
  • afterSave()
  • beforeDelete()
  • afterDelete()

Los nombres de estos métodos deben ser lo suficientemente descriptivos para que sepa lo que hacen. Asegúrese de obtener los detalles en el capítulo acerca de los modelos.

Exensiones de la Aplicación

Tanto los controladores como los ayudantes [helpers] y modelos tienen una clase padre que puede usarse para definir cambios a nivel global de la aplicación. AppController (localizado en /app/app_controller.php), AppHelper (localizado en /app/app_helper.php) y AppModel (localizado en /app/app_model.php) son magníficos lugares donde colocar métodos que desee compartir entre todos los controladores, ayudantes [helpers] o modelos.

Las rutas juegan un rol en las peticiones hechas a CakePHP. Las deficiones de rutas le dicen a CakePHP cómo mapear URLs a acciones de controladores. El comportamiento por defecto asume que la URL "/controller/action/var1/var2/" mapea a Controller::action($var1, $var2), pero puede usar rutas para personalizar URLs y la forma en que éstas son interpretadas por su aplicación.

Algunas características en una aplicación merecen ser empaquetadas como un todo. Un plugin es un paquete de modelos, controladores y vistas que cumplen un propósito específico que puede abarcar múltiples aplicaciones. Un sistema de administración de usuarios o un blog simplificado pueden ser buenos ejemplos para plugins de CakePHP.

By guille1983 on 26/2/08

1 - Trying to translate

While I was making the translation I found this sentence

"Although they aren’t a class or file", does it make any sense? Who are not a class or file? What did you mean? I didnt translate that