Introducción.
- Son unidades autocontenidas de software.
- Tienen sus propios modelos, vistas, controladores y demás componentes de soporte.
- Se asemejan a una aplicación pero no pueden ser desplegados individualmente, deben residir como parte de una aplicación.
- Los usuarios acceeden a los controladores de los módulos de la misma forma como se acceden los controladores convencionales.
- Son útiles para dividir el desarrollo y mantenimiento de aplicaciones muy grandes en módulos independientes.
- Facilitan la reutilización de código a alto nivel.
- Se utilizan para implementar funcionalidades como autenticación, manejo de usuarios, manejo de comentarios, etc.
Estructura.
- Cada módulo tiene una clase principal que hereda de CWebModule.
- El nombre de la clase se determina de la siguiente manera: ucfirst(IdentificadorMódulo) . ‘Module’.
- Ejemplo, la clase del módulo gallery debe llamarse GalleryModule.
- Esta clase se utiliza para almacenar información y características que son comúnes a todo el módulo.
- CWebModule::params almacena los parámetros del módulo.
- CWebModule:: components comparte componentes de aplicación a nivel del módulo.
Creación.
Utilizando yiic.
yiic permite crear fácilmente un esqueleto básico del módulo para empezar a trabajar sobre él.
$ cd WebRoot/MiAplicacion
$ protected/yiic shell
Yii Interactive Tool v1.0
Please type ‘help’ for help. Type ‘exito’ to quit.
>> module gallery
Uso.
- Copie el directorio del módulo en el directorio modules de la aplicación.
- Declare el módulo (con su identificador) en la propiedad modules de la configuración de la aplicación de la siguiente manera.
return array ( // ... 'modules' => array('gallery', /* ... */), // ... );
- Es posible especificar valores iniciales para las propiedades del módulo de la siguiente manera.
return array ( // ... 'modules' => array( 'gallery' => array( 'fileType' => 'png', 'rows' => 10, 'cols' => 3 ), /* ... */ ), // ... );
- La instancia del módulo puede ser accedida a través de la propiedad module del controlador acrivo.
$rows = Yii::app() -> controller -> module -> rows;
- Los módulos se acceden con la ruta módulo/controlador/acción.
- Para el ejemplo, gallery/image/add corresponderá entonces con el URL http://www.servidor.com/index.php?r=gallery/image/add.
- Un módulo puede contener a su vez a otros módulos los cuales pueden ser accedidos de manera similar: móduloPadre/móduloHijo/controlador/acción.
Enlaces.
- Yii Web Programming Framework.
http://www.yiiframework.com/ - Yii Documentation.
http://www.yiiframework.com/doc/