Asociacion HABTM

Una de las características mas destacadas de cake son las asociaciones en particular la de Has And Belongs To Many o muchos a muchos, que en muchas ocasiones nos sera de gran utilidad pero algunas veces nos dará algunos dolores de cabeza, a continuación tratare de redactar los problemas mas comunes relacionados con esta asociación.

Vamos a utilizar el siguiente ejemplo, supongamos que tenemos una tabla de usuarios y otra llamada vehículos, la asociación en sera que un vehículo tiene y pertenece a muchos usuarios y un usuario tiene y pertenece a muchos vehículos entonces crearemos otra tabla llamada usuarios_vehiculos, con los campos usuario_id y vehiculo_id.

// app/models/usuario.php
class Usuario extends AppModel {
 
    var $hasAndBelongsToMany = array('Vehiculo');
}
// app/models/vehiculo.php
class Vehiculo extends AppModel {
 
    var $hasAndBelongsToMany = array('Usuario');
}

En este punto ya tenemos listas las asociaciones para ser utilizadas, ya que para la tabla extra que creamos no es necesario crear el modelo ya que utiliza “on the fly” , pero si desean ahorrarse unos cuantos dolores de cabeza como lo hice yo, les recomiendo amplia mente crear el modelo de la tabla en cuestión y asignarle las asociaciones respectivas.

// app/models/usuarios_vehiculo.php
class UsuariosVehiculo extends AppModel {
 
    var $belongsTo = array('Usuario', 'Vehiculo');
}

Con el modelo creado ahora solo es cuestión de crear el controlador como se hace normalmente y empezar a codificar nuestras acciones, como les comenté si desean ahorrarse unos cuantos dolores de cabeza lo recomendable seria hacerlo de esta manera.

Tips avanzados para Cake

Mat Curry de pseudocoder acaba de lanzar su e-book Super Awesome Advanced CakePHP Tips. como dice el comercial de M-Force “Este libro no es para los que no pueden, es para los que quieren más”, esto quiere decir que no es recomendable para las personas que van iniciando en el aprendizaje de cake, ya que omite principios bastantes basicos que no son explicados.

El libro ofrece algunos tips interesantes, como optimizar la aplicación, el uso de recursion, comportamientos, hasta el uso de jQuery con Cake.

En conclusión el e-book esta muy completo aunque sean pocas paginas (60++) abarca muchos temas y tips interesantes, yo lo consideraria como un “must read” para cualquier desarrollador que utilize Cake.

Variables de autentificacion en vistas

Si estas utilizando el componente Auth que Cake tiene integrado, muy posiblemente deseas utilizar la información obtenida en las vistas, para validar si el usuario esta “logeado” mostrar cierto bloque Html, etc.

Lo que mucha gente no sabe es que el componente Auth guarda la información obtenida en una sesión con la llave de “Auth”, entonces para poder obtener esa información en cualquier vista, lo utilizamos de esta manera:

1
2
// Un arreglo con la información del usuario en sesión
$session->read('Auth.Usuario');

Si queremos obtener un dato especifico, lo hacemos de la siguiente manera:

1
2
// Devuelve el "id" del usuario actualmente en sesión
$session->read('Auth.Usuario.id');

Ya son varias las ocasiones que en tutoriales relacionados con el componente Auth de Cake, asignan la variable en app_controller para poder utilizarla en la vista, algo parecido a esto:

1
2
// [X] mala practica
$this->set('usuario', $this->Auth->user());

Inclusive esta información no esta incluida en el manual de Cake (es por eso que la gente se queja acerca de la documentación de Cake).

Balsamiq – Crear interfaces de usuario de una manera divertida

Desde el primer momento que utilize http://www.balsamiq.com me di cuenta que crear interfaces de usuario ahora seria divertido!, pero ¿Como?, ¿Porque?.

Tiene como objetivo principal hacer un prototipo de la interfaz de una manera rapida y sencilla, asi como comunicar de una manera bastante visual al departamento de desarrollo, sin dejar lugar a dudas.

Para empezar la herramienta tiene la caracteristica de que las interfaces se crean como si estuvieras dibujando en tu libreta, algo muy importante ya que muchos que se dedican a crear interfaces de usuario lo primero que hacen es dibujarlo en alguna libreta, y por consecuencia se pierde más tiempo dibujando algun objeto en la libreta, que utilizando Balsamiq, otra de las ventajas es que cuenta con la mayoria de los controles utilizados en una pagina Web, de hecho hasta cuenta con templates para los que se dedican a crear aplicaciones para el iPhone.

El restultado lo puedes guardar en formato XML ó exportarlo a PNG, como ya les hable mucho acerca de este software, mejor les muestro un ejemplo.

balsamiq

La usabilidad de la herramienta es bastante intuitiva, con un simple “drag and drop” ya tienes una herramienta list, ó la caracteristica de “Quick add” que con el hecho de escribir algunos caracteres nos ofrece los componentes que coinciden, por ejemplo si escribo “input” me encuentra una caja de texto, presiono Enter y ya lo tengo en mi zona de trabajo.

quickadd

Lo que más me gusto de esta aplicación es su modo de presentacion, no puedes modificar nada solo una flecha sigue la direccion del mouse, esta perfecto para la junta con el cliente y vea el prototipo de la aplicación que sera desarrollada.

Si buscas una herramienta para hacer un prototipo de la interfaz de usuario de tu aplicación Balsimiq es una de las mejores (ó la mejor) opción.