Active Record en Yii: Aunque la DAO de Yii puede manejar virtualmente cualquier tarea relacionada con la base de datos, lo más probable es que gastemos el 90% de nuestro tiempo escribiendo algunas sentencias SQL relacionadas con la ejecución de las operaciones CRUD comunes. Es tambien dificil mantener nuestro código cuando éste está mezclado con sentencias SQL. Para solucionar estos problemas, podemos usar los Registros Activos (Active Record). Registro Activo (AR) es una técnica popular de Mapeo Objeto-Relacional (ORM). Cada clase AR representa una tabla de la base de datos (o vista) cuyos atributos son representados como las propiedades de… Continuar leyendo


DAO en Yii: Yii provee un poderoso soporte para la programación con bases de datos. Construído sobre la extensión PHP de Obejotos de Datos (PDO), los Objetos de Acceso a Datos de Yii (DAO) habilitan el acceso a diferentes sistemas de administración de bases de datos (DBMS) en una interfaz uniforme simple. Las aplicaciones desarrolladas usando el DAO de Yii pueden ser fácilmente cambiadas para usar un DBMS diferente sin la necesidad de modificar el código de acceso a los datos. Los Registros Activos de Yii (AR), implementados con un enfoque ampliamente adoptado de Mapeo Objeto-Relacional, simplifican aún más la… Continuar leyendo


Para poder ordenar nuestro GridView bajo el criterio que queramos, eso lo hacemos modificando el parámetro sort del CActiveDataProvider que se encuentra en la función search del modelo, de igual modo vamos a agregar un condición extra en la búsqueda, en nuestro caso filtramos una determinada categoria y ordenaremos la tabla en forma descendente mediante el campo desc_producto: Si por ejemplo queremos mostrar el GridView de a 5 registros, usar lo siguiente:


En este tema quiero mostrar el manejo de las claves foráneas en Yii framework mediante Active Record (AR). Antes de usar AR para ejecutar consultas relacionales, necesitamos darle conocer a AR como una clase AR se relaciona con otra. La relación entre dos clases AR está directamente asociada con la relación entre las tablas de la base de datos representadas por esas clases. Desde el punto de vista de la base de datos, una relación entre dos tablas A y B tiene tres tipos: uno-a-muchos (ej.: User y Post), uno-a-uno (ej.: User y Profile) y muchos-a-muchos (ej.: Category y Post). En AR, hay cuatro tipo de relaciones: BELONGS_TO: si la relación… Continuar leyendo


Un tema más que importante en toda aplicación es que tenga validaciones para evitar que el usuario ingrese cualquier dato por ejemplo a una base de datos, también es importante por cuestiones de seguridad. Por suerte Yii framework nos provee validaciones de forma automática y también podemos crear nuestras propias validaciones muy fácilmente. Si queremos validar campos lo hacemos en el método rules() del modelo en cuestión: La validación para hacer campos obligatorios: array(‘id_proveedor, fecha_compra, user, id_tipo_documento, total’, ‘required’), También puedes especificar que el valor sea numero, incluso entero: array(‘id_tipo_documento’, ‘numerical’, ‘integerOnly’=>true), array(‘igv, total, descuento_total’, ‘numerical’), Para cadenas podemos restringir la… Continuar leyendo


Este manual abarca los puntos más usados en una aplicación web típica. Índice: Instalar Yii Framework y crear la primera aplicación Crear modelos y CRUDs en Yii Framework Personalizar gii en Yii Framework PHP layouts y variables del config en Yii Modificar MENU y CSS en Yii Temas en Yii APP multilenguaje en Yii Autenticación de usuarios utilizando una base de datos en Yii URLs limpias en Yii Framework Validaciones en Yii Bases de datos (DAO) en Yii Bases de datos (AR) en Yii Relaciones en Yii Orden por defecto y condición extra para el GridView en Yii Fechas con… Continuar leyendo


Una cuestión importante a tener en cuenta es tener URLs limpias que sean amigables ya que esto principalmente ayuda a tener un mejor SEO y también puede servir de mucho a un usuario común para recordarse de urls que visitó. Yii de manera predeterminada crea enlaces de la siguiente manera: /index.php?r=controlador/vista Pero que estos se pueden mejorar poniendo las propiedades del componente urlManager, a lo cual los enlaces quedarían así: /controlador/vista Crear un .htaccess en la carpeta del proyecto con el siguiente código: Vamos a /protected/config/main.php y en el arreglo component agregamos: Con esto hemos limpiado las URLs de nuestro sistema, si nuestros… Continuar leyendo


Primero crear la tabla usuarios en su DB  [Para usar una determinada DB para su aplicación web deben de vincularla primero (El script es para MySql, pero lo pueden adaptar para su gestor de base de datos), ver este tema]: — —————————- — Table structure for `usuarios` — —————————- DROP TABLE IF EXISTS `usuarios`; CREATE TABLE `usuarios` ( `id_usuario` int(11) NOT NULL AUTO_INCREMENT, `nick_usuario` varchar(128) NOT NULL, `pass_usuario` varchar(128) NOT NULL, PRIMARY KEY (`id_usuario`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Luego crear el modelo y el CRUD de esta tabla con el Gii En protected/components/UserIdentity.php sustituimos la clase UserIdentity por: En protected/models/Usuarios.php… Continuar leyendo


Yii por defecto viene con un menú básico (CMenu): Ese código lo podrán encontrar dentro de la carpeta protected -> views -> layouts -> main.php Por ejemplo si se quiere agregar el acceso para un crud creado hay que agregar lo siguiente dentro del arreglo items del widget menu de Yii: Si se quiere un menú mas potente usar la extensión mbmenu: – Bajar la extensión de la pagina oficial de Yii y copiamos la carpeta /protected/extensions – En /protected/views/layouts/main.php cambiar el widget del CMenu por algo como: Al colocar el nuevo menú seguramente se ve extraño, para evitar esto debemos quitar el… Continuar leyendo