Archivo

Archivo para la categoría ‘2 Principios básicos de CakePHP’

2.4.4 Convenciones de Vistas

Sábado, 4 de Julio de 2009 admin Sin comentarios

Los archivos de plantillas de Vistas (Views) deben ser nombradas después de las funciones de los controladores con underscores “_”. La funcion getReady() del controlador PeopleController se visualizara con la plantilla de vista en /app/views/people/get_ready.ctp por ejemplo.

El patrón básico es: /app/views/controller/underscored_function_name.ctp

Al nombrar las piezas de su aplicación utilizando las convenciones de CakePHP, usted adquiere funcionalidad sin mucho mantenimiento de la configuración. Aquí encontramos un ejemplo final de las convenciones

  • Tabla de Base de Datos: ‘people’
  • Clase de Modelo: ‘Person’, encontrada en /app/models/person.php
  • Clase de Controlador: ‘PeopleController’, encontrada en /app/controllers/people_controller.php
  • Plantilla de Vista, encontrada en /app/views/people/index.ctp

Usando estas convenciones, CakePHP entiende que la peticion http://example.com/people/ apunta a la llamada de funcion index() en el controlador , PeopleController, donde el modelo Person esta disponible automaticamente (y apunta automaticamente a la tabla ‘people’ en la base de datos), y se renderiza en el archivo. Ninguna de estas relaciones han sido configuradas por otra razon que crear clases y archivos que usted necesita crear.

 

Ahora que usted ya se ha involucrado con los fundamentos de CakePHP, puede revisar el tutorial para realizar un Blog en CakePHP, que se encuentra al final de este manual.

 

Fuente: book.cakephp.org

 

Categories: 2.4.4 Convenciones de Vistas Tags:

2.4.3 Convenciones de Controladores

Sábado, 4 de Julio de 2009 admin Sin comentarios

Los nombres de las clases de los controladores son plurales, CamelCased, y Terminan con ‘Controller’. PeopleController, BigPeopleController y, ReallyBigPeopleController son ejemplos de nombres de controladores.

La primera función para un controlador debe de ser la función index(). Cuando la petición especifica un controlador pero no una acción, el comportamiento por defecto de CakePHP es renderizar la función index() de dicho controlador. Ejemplo, una petición a http://www.example.com/apples/ llama a la función index() de el controlador ApplesController, una petición a http://www.example.com/apples/view llama a la función view() de el controlador ApplesController.

También puedes cambiar la visibilidad de las funciones de los controladores en CakePHP anteponiendo un guión bajo al nombre de la función en el controlador.

  1. <?php
  2. class NewsController extends AppController {
  3. function latest() {
  4. $this->_findNewArticles();
  5. }
  6. function _findNewArticles() {
  7. //Lógica para encontrar los nuevos articulos.
  8. }
  9. }
  10. ?>

De esta forma, la petición a http://www.example.com/news/latest/ será accedida de forma normal, pero una petición a http://www.example.com/news/_findNewArticles/ será rechazada como error debido al uso del guión bajo en el nombre de la función.

 

2.4.3.1 Consideraciones de URL para nombres de controladores

Como se puede ver, los controladores con un nombre simple (de una sola palabra) pueden ser fácilmente mapeados a una url en minúsculas. Por ejemplo,ApplesController (que se define en el archivo ‘apples_controller.php’) y accedido desde http://example.com/apples.

Por otro lado múltiples combinaciones de palabras pueden ser transformadas automáticamente en un mismo nombre de controlador:

  • /redApples
  • /RedApples
  • /Red_apples
  • /red_apples

Todas resuelven la acción index de controlador RedApples. sin embargo, la convención es que las urls sean en minúsculas y separadas con guión bajo, por lo tanto/red_apples/go_pick es la forma correcta de acceder a la acción. RedApplesController::go_pick.

Para mas información sobre CakePHP URLs y sus parametros, ver “Configuración de Rutas”.

 

Fuente: book.cakephp.org

2.4.2 Convenciones de Modelo

Sábado, 4 de Julio de 2009 admin Sin comentarios

Los nombres de las clases de modelos están en singular y con CamelCase. Person, BigPerson, y ReallyBigPerson son todos ejemplos de nombres de modelos convencionales.

Los nombres de las tablas correspondientes a los modelos están en plural y usando guión bajo. Las tablas subyacentes para los modelos arriba mencionados serían: people [plural de persona en inglés], big_people, y really_big_people respectivamente.

Las tablas unión [Join] usadas en una relación hasAndBelongsToMany entre modelos deberían ser nombradas después de los modelos de las tablas a las cuales se unirán en orden alfabético(apples_zebras en vez de zebras_apples). Si su aplicación contiene este tipo de relaciones entre sus modelos Tag y Post, el nombre de tabla resultante [de la unión] sería posts_tags.

 

Fuente: book.cakephp.org

 

Categories: 2.4.2 Convenciones de Modelo Tags:

2.4.1 Convenciones de los nombres de archivos y clases

Sábado, 4 de Julio de 2009 admin Sin comentarios

En general, los nombres de archivo llevan el símbolo underscore “_”, mientras que los nombres de las clases usan CamelCase. La clase KissesAndHugsController puede ser encontrada en el archivo kisses_and_hugs_controller.php, por ejemplo.

Sin embargo, el nombre de la clase que contiene un archivo puede no necesariamente ser encontrada en el nombre de archivo. La clase EmailComponent es encontrada en un archivo llamado email.php, y la clase HtmlHelper es encontrada en un archivo llamado html.php.

 

Fuente: book.cakephp.org

 

2.4 Convenciones de CakePHP

Sábado, 4 de Julio de 2009 admin Sin comentarios

Somos grandes fanáticos de convención sobre configuración. Aun cuando toma un poco de tiempo aprender las convenciones de CakePHP, usted ahorrará tiempo en la marcha: siguiendo las convenciones, usted obtiene libre funcionalidad, y también se libera de la pesadilla del mantenimiento del seguimiento de los archivos de configuración. Las convenciones también hacen un sistema de desarrollo muy uniforme, permitiendo a otros desarrolladores ayudar más fácilmente.

Las convenciones de CakePHP han sido destiladas de años de experiencia de desarrollo web y mejores prácticas. Mientras que le sugerimos el uso de estas convenciones durante el desarrollo con CakePHP, deberíamos mencionar que muchos de estos postulados pueden ser anulados, esto es especialmente útil cuando se trabaja con sistemas heredados.

 

Fuente: book.cakephp.org

Categories: 2.4 Convenciones de CakePHP Tags:

2.3.1 La Carpeta App

Sábado, 4 de Julio de 2009 admin Sin comentarios

La carpeta App es donde usted hará la mayor parte del desarrollo de su aplicación. Veámos un poco más de cerca las carpetas dentro de App.

config
Mantiene los (pocos) archivos de configuración que CakePHP usa. Detalles de conexión a bases de datos, arranque [bootstrapping], archivos de configuración del núcleo y más deberían ser almacenados aquí.
controllers
Contiene los controladores de su aplicación y sus componentes.
locale
Almacena archivos de cadenas para la internacionalización.
models
Contiene los modelos de su aplicación, comportamientos [behaviors], y orígenes de datos [datasources].
plugins
Contiene los paquetes de plugins
tmp
Aquí es donde CakePHP almacena información temporal. La información que actualmente se almacena depende en cómo haya configurado a CakePHP, pero esta carpeta es usualmente usada para almacenar descripciones de modelos, registros [logs], y algunas veces información de sesiones.
vendors
Cualquier grupo de clases o librerías de terceros debería ser ubicado aquí. Hacerlo así hace que sean más fáciles de acceder a ellas usando la función App::Import(’vendor’). Los observadores meticulosos notarán que esto parece redundante, ya que también existe una carpeta vendors en el nivel superior de nuestra estructura de directorios. Entraremos en las diferencias entre las dos cuando discutamos acerca de la administración de múltiples aplicaciones e instalaciones más complejas.
views
Los archivos de presentación son ubicados aquí: elementos [elements], páginas de error, ayudantes [helpers], layouts y archivos de vistas.
webroot
En una configuración de producción, esta carpeta debería servir como la raíz del sitio [document root] para su aplicación. Las carpetas aquí también sirven como lugares de almacenamiento para hojas de estilo en cascada [CSS stylesheets], imágenes y archivos JavaScript.

 

Fuente: book.cakephp.org

Categories: 2.3.1 La Carpeta App Tags:

2.3 Estructura de archivos de CakePHP

Sábado, 4 de Julio de 2009 admin Sin comentarios

Tras descargar y extraer CakePHP, estos serán los ficheros y carpetas que deberías ver:

  • app
  • cake
  • vendors
  • .htaccess
  • index.php
  • README

Observarás 3 carpetas principales:

  • La carpeta app será donde haremos nuestra magia: es donde se ubicarán los ficheros de tu aplicación.
  • La carpeta cake es donde nosotros hemos hecho nuestra magia. Comprométete a no modificar los ficheros de esta carpeta. No podremos ayudarte si has modificado el núcleo.
  • Finalmente, la carpeta vendors es donde ubicarás las librerías PHP de terceros que necesites usar con tus aplicaciones en CakePHP.

2.2 Una petición típica de CakePHP

Sábado, 4 de Julio de 2009 admin Sin comentarios

Hemos cubierto los ingredientes básicos de CakePHP, así que echemos un vistazo a cómo los objetos trabajan juntos para completar una petición básica. Continuando con nuestro ejemplo de petición original, imaginemos que nuestro amigo Ricardo acaba de hacer clic en el enlace “¡Comprar un pastel personalizado ahora!” en una página de bienvenida de una aplicación CakePHP.

typical-cake-request

 

Figura 2. Petición típica de Cake.

Negro = elemento requerido, Gris = elemento opcional, Azul = callback

  • Ricardo hace clic en el enlace apuntando a http://www.ejemplo.com/tortas/comprar, y su navegador hace una petición a su servidor Web.
  • El enrutador analiza la URL para extraer los parámetros para esta petición: el controlador, la acción, y cualquier otro argumento(s) que pueda afectar a la lógica de negocio durante esta petición.
  • Usando las rutas, una petición URL es mapeada a una acción de controlador (un método en una clase de controlador específica). En este caso, es el método comprar() del controlador PastelesController. El callback beforeFilter() del controlador es llamado antes de que cualquier acción lógica del controlador sea ejecutada.
  • El controlador puede usar modelos para ganar acceso a los datos de la aplicación. En este ejemplo, el controlador usa un modelo para obtener información de la base de datos de las últimas compras de Ricardo. Cualquier callback de modelo, comportamiento [behavior], y orígenes de datos [DataSources] aplicables pueden activarse durante esta operación. Mientras que el uso del modelo no es requerido, todos los controladores de CakePHP inicialmente requieren al menos un modelo, salvo que el desarrollador indique lo contrario.
  • Después que el modelo ha obtenido toda la información, ésta es devuelta al controlador. Pueden activarse callbacks del modelo.
  • El controlador puede usar componentes para refinar aun más los datos o realizar otras operaciones (manipulación de sesiones, autenticación, o envíos de email, por ejemplo).
  • Una vez que el controlador ha usado modelos y componentes para preparar suficientemente la información, ésta es entregada a la vista usando el método set() del controlador. Los callbacks de controlador pueden ser aplicados antes de que la información sea enviada. La lógica de vista es ejecutada, la cual puede incluir el uso de elementos y/o ayudantes [helpers]. Por defecto, la vista es creada dentro del diseño [layout].
  • Callbacks del controlador adicionales (como afterFilter) pueden ser aplicados. El código completo creado por la vista es enviado al navegador de Ricardo.

 

Fuente: book.cakephp.org

2.1.4 Extensiones de la Aplicación

Sábado, 4 de Julio de 2009 admin Sin comentarios

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 definiciones 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.

Fuente: book.cakephp.org

2.1.3 Extensiones de los Modelos

Viernes, 3 de Julio de 2009 admin Sin comentarios

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.

 

Fuente: book.cakephp.org