-
Notifications
You must be signed in to change notification settings - Fork 0
Home
#Slug Behavior. ###Enables a model object to sluggable behavior.
##1.- Descargar el paquete.
Usted puede descargar la versión mas reciente de esta traduccion desde la siguientes URLs:
Download as .tar.gz Download as .zip
##2.- Descargar el paquete.
Debera agregar el archivo slug.php
en su carpeta app/models/behaviors/
en caso de usar cakephp inferior a la versión 2 o en app/Model/Behavior/
en caso de usar versión 2 o superior.
Este es el campo en la BD que que describa un registro en especifico(debera ser un campo uníco en la tabla) y la cual se usara posteriormente para generar el slug_dst
que posteriormente es empleado para construir una URL.
Por defecto toma el campo que hayamos definido en su Modelo como displayField, el cual sufrira la trasformación slug para ser almacenado como slug_dst
.
<?php
var $displayField = 'titulo';
#esto nos genera
Articulo.titulo = "Este es un articulo sobre el comportamiento Slug"
Articulo.slug_dst = "Este-es-un-articulo-sobre-el-comportamiento-Slug"
#Otra forma de hacerlo es de la siguiente manera
var $actsAs = array('Slug'=>array('slug_src' => 'titulo'));
El campo que tomara sera titulo
(por encima de nombre
).
Este campo tambien debe ser unico en la tabla y sera el resultado de la trasformación slug sobre slug_dst
que sera almacenado en la base de datos automaticamente.
<?php
var $actsAs = array('Slug'=>array('slug_src' => 'seo_url'));
#esto nos genera
Articulo.slug_dst = "Este es un articulo sobre el comportamiento Slug"
Articulo.seo_url = "este-es-un-articulo-sobre-el-comportamiento-slug" .
Longitud máxima que puede llegar a tomar slug_dst.
<?php
var $actsAs = array('Slug'=>array('max_len'=>30));
#esto nos genera
Articulo.slug_dst = "este-es-un-articulo-sobre-el-c"
Separador de palabras wd_separator
(words separator) es el caracter separador de palabras, por defecto(-).
<?php
var $actsAs = array('Slug'=>array('wd_separator'=>'_'));
#esto nos genera
Articulo.slug_dst = "este_es_un_articulo_sobre_el_comportamiento_slug" .
####extension_active:
Por defecto false, si activamos este campo agrega la extensión '.html', reduciendo 5 carácteres el campo max_len (la longitud de '.html').
<?php
var $actsAs = array('Slug'=>array('extension_active'=>true));
#esto nos genera
Articulo.slug_dst = "este-es-un-articulo-sobre-el-comportamiento-slug.html"
Imaginemos que queremos hacer que nuestros articulos que nos gustaria que tuviera urls amigable es decir que sobre el titulo podieramos es decir:
#visualizando un articulo
http://mi-sitio/articulos/ver/algun-articulo.html
#Editando un articulo
http://mi-sitio/articulos/editar/algun-articulo.html
#Borrando un articulo
http://mi-sitio/articulos/borrar/algun-articulo.html
Entonces definimos la siguiente tabla:
CREATE TABLE IF NOT EXISTS `articulos` (
`id` INT( 5 ) PRIMARY KEY NOT NULL UNIQUE AUTO_INCREMENT,
`nombre` VARCHAR( 80 ) NOT NULL UNIQUE,
`titulo` VARCHAR( 80 ) NOT NULL UNIQUE,
`slug_dst` VARCHAR( 50 ) NOT NULL UNIQUE,
`contenido` VARCHAR( 150 ) DEFAULT NULL,
`created` DATETIME NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
##Definiendo el slug_dst:
En nuestro modelo de Articulo definimos el comportamiento slug de la siguiente manera:
<?php
class Articulo extends AppModel{
var $name = 'Articulo';
#campo a mostrar
var $displayField = 'nombre';
#Definición del comportamiento slug
var $actsAs = array( 'slug'=>array('extension_active'=>true));
}
Esto nos define a nuestro slug_src con el campo nombre
ya que definimos el displayField.
Cabe mencionar que si definimos el displayField y a la vez configuramos el parametro slug_src en el arreglo de argumentos de nuestro comportamiento slug, la opción que tomara sera esta ultima, ya que lo estaremos estableciendo de forma explicita, veamos el ejemplo:
<?php
class Articulo extends AppModel{
var $name = 'Articulo';
var $displayField = 'nombre';
var $actsAs = array('Slug'=>array('slug_src' => 'titulo'));
El código anterior hace que el define el slug_src
el cual sufrira una trasformación slug
y sera almacenado en el campo slug_dst
para que posteriormente podamos generar ls URL amigables que nos permitan acceder a algun registro en especifico.
##Uso en el Controlador
Finalmente en nuestro controlador podemos llamar a las funciones slug:
<?php
#leyendo un registro a partir del slug
$this->Articulo->readBySlug($slug);
#obteniendo el id del articulo a partir del slug
$id = $this->Articulo->primaryKeyBySlug(($slug));
Para las demas funciones el comportamiento slug realiza las operaciones necesarias por ejemplo si deseamos guardar un registro basta con hacer:
<?php
#agregando
$this->Articulo->save($this->data);
Donde en $this->data
debera existir el campo nombre y automaticamente el comportamiento nos va a generar el slug_dst
slug destino al tiempo que realiza las validaciones necesarias, ¿facil no?.