miércoles, 3 de febrero de 2016
Codeigniter - Hook de Validación por comentarios
Con este ejemplo, vamos a crear una validación, simplemente utilizando comentarios con anotaciones.
Para ellos simplemente se ha de crear el siguiente hook.
Y en el controlador el siguiente código:<?php defined('BASEPATH') OR exit('No direct script access allowed'); /* | ------------------------------------------------------------------------- | Hooks | ------------------------------------------------------------------------- | This file lets you define "hooks" to extend CI without hacking the core | files. Please see the user guide for info: | | http://codeigniter.com/user_guide/general/hooks.html | */ $hook['post_controller_constructor'] = function() { //Obtenemos la instancia $_ci=& get_instance(); //Nombre de la clase $class = $_ci->router->fetch_class(); //Nombre de la funcion $function = $_ci->router->fetch_method(); //Datos reflection $reflection = new ReflectionMethod(ucfirst($class), $function); //Documentos en la funcion $docs = $reflection->getDocComment(); //Para documentos en la clase use lo siguiente: //$reflection_class = new ReflectionClass(ucfirst($class) //$docs_class = $reflection->getDocComment(); //Filtramos por una cadena que comienze con @validate::contenido_validate $pattern = '/@validate::([a-zA-Z0-9\_]+)/'; if( preg_match_all( $pattern, $docs, $matches) ) { $annotations = $matches[1]; //en un arreglo tenemos el contenido de @validate:: //obtenemos la sesion si existe $persona = ( isset( $_ci->session->userdata['persona'] ) ) ? $_ci->session->userdata['persona'] : null; if(in_array('personanormal' , $annotations)){ if(!$persona && $persona->tipo != 'normal'){ redirect('/algunaurl/'); exit(); } return true; } if(in_array('personaadmin' , $annotations)){ if(!$persona && $persona->tipo != 'admin'){ redirect('/algunaurl/'); exit(); } return true; } if(in_array('personalogeada' , $annotations)){ if(!$persona){ redirect('/algunaurl/'); exit(); } return true; } } };
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class User extends CI_Controller { /** * @Validate::personanormal */ public function index(){ //algo normal } /** * @Validate::personaadmin */ public function index(){ //algo admin } /** * @Validate::personalogeada */ public function index(){ //algo persona logeada } }
Suscribirse a:
Enviar comentarios
(
Atom
)
Sígueme en las Redes Sociales
Donaciones
Datos personales
Entradas populares
-
En este apartado vamos a explicar como ejercutar archivos PHP a través del terminal de Ubuntu. Lo primero que tendríamos que hacer es inst...
-
En este blog voy a comentar un tema que se utilizan en casi todas las páginas web que existen, y es el tema de la paginación. La paginaci...
-
Este post trata de la integración de la librería PHPExcel en Codeigniter, aunque se podría aplicar a cualquier librería, como por ejemplo mP...
-
Ejemplo para añadir o sumar un número determinado de hora/s, minuto/s, segundo/s a una fecha en php. Con la función strtotime se puede ...
-
Este tema es uno de los temas primordiales sobre el framework Codeigniter, ya que en alguna ocación nos hemos visto obligados a recoger dato...
© Espacio Daycry - Espacio de programación 2013 . Powered by Bootstrap , Blogger templates and RWD Testing Tool
No hay comentarios :
Publicar un comentario