El comportamiento árbol y las ACL
Estoy en un proyecto en que algo más adelante surgirá probablemente la necesidad de clasificar y presentar el contenido del sitio web en función del tipo de usuario. Para hacer esto, CakePHP viene con el comportamiento ACL (Access Control List, o lista de control de acceso, es un concepto informático que se utiliza para separar privilegios y determinar permisos de acceso). Por cierto, un apunte de última hora: a raíz de este hilo sobre este tema en el grupo Google CakePHP en español me acabo de enterar que IMHO quiere decir In my honest opinion; también puede ser que las ACL no sean necesarias para esto.
Navegando por Internet, y leyendo un poquito sobre este tema, he descubierto que CakePHP 1.2 incorpora cuatro comportamientos o behaviors: ACL, Containable, Translate y Tree. Como resulta que no puedo ir directamente al comportamiento ACL porque es un poco complicado y utiliza Tree, que es más sencillo, he hecho algunas pruebas con este último. Básicamente, en este post pongo en práctica la explicación del manual oficial de CakePHP, que está muy bien.
¿Qué es un comportamiento?
Hasta ahora nunca hemos hablado de los comportamientos y vamos a presentarlos. Del mismo modo que los componentes extienden la funcionalidad de los controladores y los ayudantes extienden la de las vistas, los comportamientos de CakePHP sirven para extender la funcionalidad de los modelos (recordemos que un modelo CakePHP es una clase ActiveRecord que representa una tabla de la base de datos con todo el código PHP para acceder, añadir, modificar y borrar los registros de ésta). El manual de CakePHP los define muy bien: «Los comportamientos son una manera de organizar parte de la funcionalidad definida en los modelos de CakePHP».
El comportamiento árbol
El comportamiento árbol -o Tree behavior– sirve, por ejemplo, para montar una jerarquía de categorías. Para poder utilizar esta funcionalidad de CakePHP sólo tenemos que añadir tres campos extra a la tabla de la base de datos: padre_id, izquierdo y derecho. Más concretamente, el SQL para la tabla es este:
create table categorias( id integer(10) unsigned not null auto_increment, padre_id integer(10) default null, izquierdo integer(10) default null, derecho integer(10) default null, nombre varchar(255) default ' ', primary key(id) );
Continuará…
Filed under: Primeros pasos con CakePHP | Leave a comment »