Edición de «Application controller»
De KumbiaPHP Framework Wiki
Advertencia: no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si inicias sesión o creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.
Puedes deshacer la edición. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces guarda los cambios para así efectuar la reversión.
Revisión actual | Tu texto | ||
Línea 1: | Línea 1: | ||
− | + | '''ApplicationController''' | |
Es la clase principal utilizada para crear controladores, que son la primera parte del | Es la clase principal utilizada para crear controladores, que son la primera parte del | ||
modelo MVC. Contiene métodos importantes para facilitar la interacción entre éstos, los | modelo MVC. Contiene métodos importantes para facilitar la interacción entre éstos, los | ||
modelos y la presentación. | modelos y la presentación. | ||
− | |||
Características: | Características: | ||
− | + | • Los valores de los atributos de las sub-clases son persistentes, es decir que no se | |
− | |||
pierden cuando termina la ejecución de un script. | pierden cuando termina la ejecución de un script. | ||
+ | • Automatiza la interacción entre la lógica y la presentación | ||
+ | • Es sencilla de usar | ||
− | + | '''Métodos de la Clase ApplicationController''' | |
− | |||
− | |||
− | |||
− | |||
La clase posee una serie de métodos que son útiles para el trabajo con controladores. | La clase posee una serie de métodos que son útiles para el trabajo con controladores. | ||
− | + | '''Render($view)''' | |
− | Visualiza una vista que pertenece al mismo controlador. | + | Visualiza una vista que pertenece al mismo controlador. Ejemplo: |
− | + | <source lang=php line> | |
− | Ejemplo: | + | 1. <?php |
− | <source lang=php> | + | 2. |
− | <?php | + | 3. class ProductosController extends ApplicationController { |
− | + | 4. | |
− | class ProductosController extends ApplicationController { | + | 5. function index(){ |
− | + | 6. $this> | |
− | + | render('consultar'); | |
− | + | 7. } | |
− | + | 8. | |
− | + | 9. } //fin de la clase | |
− | } //fin de la clase | + | 10. |
− | + | 11.?> | |
− | ?> | ||
</source> | </source> | ||
En este caso se visualizaría la vista views/productos/consultar.phtml | En este caso se visualizaría la vista views/productos/consultar.phtml | ||
− | + | '''Redirect($url, $seconds=0.5)''' | |
Redirecciona la ejecución a otro controlador en un tiempo de ejecución determinado | Redirecciona la ejecución a otro controlador en un tiempo de ejecución determinado | ||
− | <source lang=php> | + | <source lang=php line> |
− | <?php | + | 1. <?php |
− | + | 2. | |
− | class ProductosController extends ApplicationController { | + | 3. class ProductosController extends ApplicationController { |
− | + | 4. | |
− | + | 5. function index(){ | |
− | + | 6. $this> | |
− | + | redirect('facturas/nueva', 2); | |
− | + | 7. } | |
− | } | + | 8. |
− | + | 9. } | |
− | ?> | + | 10. |
+ | 11.?> | ||
</source> | </source> | ||
En el ejemplo va a facturas/nueva después de 2 segundos | En el ejemplo va a facturas/nueva después de 2 segundos | ||
− | + | '''Post($value)''' | |
Obtiene acceso orientado a objetos a los valores de $_POST, $value es el índice para | Obtiene acceso orientado a objetos a los valores de $_POST, $value es el índice para | ||
pasar al array asociativo. | pasar al array asociativo. | ||
− | + | '''Get($value)''' | |
Obtiene acceso orientado a objetos a los valores de $_GET, $value es el índice para | Obtiene acceso orientado a objetos a los valores de $_GET, $value es el índice para | ||
pasar al array asociativo. | pasar al array asociativo. | ||
− | + | '''Request($value)''' | |
Obtiene acceso orientado a objetos a los valores de $_REQUEST, $value es el índice para | Obtiene acceso orientado a objetos a los valores de $_REQUEST, $value es el índice para | ||
pasar al array asociativo. | pasar al array asociativo. | ||
− | + | '''Render_partial($name)''' | |
Visualiza una vista parcial (partial) que pertenece al mismo controlador. Ejemplo: | Visualiza una vista parcial (partial) que pertenece al mismo controlador. Ejemplo: | ||
− | <source lang=php> | + | <source lang=php line> |
− | <?php | + | 1. <?php |
− | + | 2. | |
− | + | 3. class ProductosController extends ApplicationController { | |
− | + | 4. | |
− | + | 5. function index(){ | |
− | + | 6. $this> | |
− | + | render_partial('mostrar_menu'); | |
− | + | 7. }//fin del metodo | |
− | }//fin de la clase | + | 8. |
− | + | 9. }//fin de la clase | |
− | ?> | + | 10. |
+ | 11.?> | ||
</source> | </source> | ||
En este caso se visualizaría la vista parcial views/productos/_mostrar_menu.phtml | En este caso se visualizaría la vista parcial views/productos/_mostrar_menu.phtml | ||
− | + | '''Route_to([params: valor])''' | |
− | Hace el enrutamiento desde un controlador a otro, o desde una acción a otra. | + | Hace el enrutamiento desde un controlador a otro, o desde una acción a otra. Recibe los |
− | + | parámetros con nombre: | |
− | Recibe los parámetros con nombre: | + | • controller: A qué controlador se va a redireccionar |
− | + | • action: A que acción se va a redireccionar | |
− | • | + | • id: Id de la redirección |
− | |||
− | • | ||
− | |||
− | • | ||
− | |||
Ejemplo: | Ejemplo: | ||
− | <source lang=php> | + | <source lang=php line> |
− | return $this | + | 1. return $this> |
+ | route_to("controller: clientes", "action: consultar", "id:1"); | ||
</source> | </source> | ||
El tipo de enrutamiento que realiza es interno, es decir que lo usuarios no notan cuando | El tipo de enrutamiento que realiza es interno, es decir que lo usuarios no notan cuando | ||
están siendo redireccionados en la aplicación. | están siendo redireccionados en la aplicación. | ||
− | + | ||
− | + | '''Redirect($url_controlador)''' | |
− | + | Realiza un redireccionamiento a otro controlador/accion mediante HTTP. Es útil cuando | |
− | + | queremos hacer una real redirección que incluso cambie la URL que aparece en el | |
− | |||
− | |||
− | |||
− | |||
− | Realiza un redireccionamiento a otro controlador/accion mediante HTTP. | ||
− | |||
− | Es útil cuando queremos hacer una real redirección que incluso cambie la URL que aparece en el | ||
explorador. | explorador. | ||
− | |||
Ejemplo: | Ejemplo: | ||
− | <source lang=php> | + | <source lang=php line> |
− | $this | + | 1. $this> |
+ | redirect(“/productos/query”); | ||
</source> | </source> | ||
− | + | '''Cache_layout($minutes)''' | |
Caché de la vista views/layout/ correspondiente al controlador durante $minutes | Caché de la vista views/layout/ correspondiente al controlador durante $minutes | ||
− | + | '''Not_found($controller, $action)''' | |
Puedes definir el método not_found en cualquier controlador, en caso de estar definido se | Puedes definir el método not_found en cualquier controlador, en caso de estar definido se | ||
llamará cuando no encuentre definida alguna acción así es más fácil controlar este tipo | llamará cuando no encuentre definida alguna acción así es más fácil controlar este tipo | ||
de errores: | de errores: | ||
− | <source lang=php> | + | <source lang=php line> |
− | <?php | + | 1. <?php |
− | + | 2. class PruebaController extends ApplicationController { | |
− | class PruebaController extends ApplicationController { | + | 3. |
− | + | 4. function index(){ | |
− | + | 5. $this> | |
− | + | render_text("Este es el index"); | |
− | + | 6. } | |
− | + | 7. | |
− | + | 8. function not_found($controller, $action){ | |
− | + | 9. Flash::error("No esta definida la accion $action, redireccionando | |
− | + | a index..."); | |
− | + | 10. return $this> | |
− | } | + | route_to('action: index'); |
− | ?> | + | 11. } |
+ | 12. } | ||
+ | 13.?> | ||
</source> | </source> | ||
Línea 150: | Línea 138: | ||
desarrollo | desarrollo | ||
− | + | '''Set_response($type)''' | |
− | Especifica el tipo de respuesta que va a generar el controlador. | + | Especifica el tipo de respuesta que va a generar el controlador. Cuando es el valor de |
− | + | $type es view solamente envía la salida de la vista más no del layout, el template o | |
− | Cuando es el valor de $type es view solamente envía la salida de la vista más no del layout, el template o cualquier cabecera html. | + | cualquier cabecera html. Es ideal en salidas AJAX o PDF. Otro valor para $type es XML. |
− | + | <source lang=php line> | |
− | Es ideal en salidas AJAX o PDF. Otro valor para $type es XML. | + | 1. <?php |
− | <source lang=php> | + | 2. class PruebaController extends ApplicationController { |
− | <?php | + | 3. |
− | + | 4. function accion_ajax(){ | |
− | class PruebaController extends ApplicationController { | + | 5. $this> |
− | + | set_response(“view”); | |
− | + | 6. } | |
− | + | 7. } | |
− | |||
− | } | ||
</source> | </source> | ||
− | + | '''Is_alnum($valor)''' | |
− | Evalúa si un campo es alfanumérico o no. | + | Evalúa si un campo es alfanumérico o no. Es útil para validar la entrada de datos al |
− | + | recibirlos por parte de usuarios. | |
− | Es útil para validar la entrada de datos al recibirlos por parte de usuarios. | + | <source lang=php line> |
− | <source lang=php> | + | 1. <?php |
− | <?php | + | 2. class PruebaController extends ApplicationController { |
− | + | 3. | |
− | class PruebaController extends ApplicationController { | + | 4. function adicionar(){ |
− | + | 5. $nombre = $this> | |
− | + | request(“nombre”); | |
− | + | 6. if($this> | |
− | + | is_alnum($nombre)==false){ | |
− | + | 7. Flash::error(“Entrada invalidad para precio”); | |
− | + | 8. return; | |
− | + | 9. } | |
− | + | 10. /* ..*/ | |
− | + | 11. } | |
− | } | + | 12. } |
− | ?> | + | 13.?> |
</source> | </source> | ||
− | + | '''Load_record($record)''' | |
− | |||
Carga los campos de un registro ActiveRecord como atributos del controlador, recibe | Carga los campos de un registro ActiveRecord como atributos del controlador, recibe | ||
como parámetro $record ActiveRecord o string registro ActiveRecord a cargar, si es un | como parámetro $record ActiveRecord o string registro ActiveRecord a cargar, si es un | ||
− | '''string:''' este debe corresponder al nombre de un modelo Soporta argumento variable. | + | '''string: '''este debe corresponder al nombre de un modelo Soporta argumento variable. |
'''field:''' campos a cargar separados por coma | '''field:''' campos a cargar separados por coma | ||
Línea 202: | Línea 187: | ||
'''preffix:''' prefijo para el atributo en el controlador | '''preffix:''' prefijo para el atributo en el controlador | ||
− | <source lang=php> | + | <source lang=php line> |
//Ejemplo1: | //Ejemplo1: | ||
− | $usuario = $this | + | $usuario = $this> |
− | $this | + | Usuario> |
− | + | find(1); | |
+ | $this> | ||
+ | load_record($usuario); | ||
//Ejemplo2: | //Ejemplo2: | ||
− | $usuario = $this | + | $usuario = $this> |
− | $this | + | Usuario> |
− | + | find(1); | |
+ | $this> | ||
+ | load_record($usuario, 'except: id, sexo'); | ||
//Ejemplo3: | //Ejemplo3: | ||
− | $usuario = $this | + | $usuario = $this> |
− | $this | + | Usuario> |
− | + | find(1); | |
+ | $this> | ||
+ | load_record($usuario, 'field: nombre, apellido'); | ||
//Ejemplo4: | //Ejemplo4: | ||
− | $usuario = $this | + | $usuario = $this> |
− | $this | + | Usuario> |
− | + | find(1); | |
+ | $this> | ||
+ | load_record($usuario, 'preffix: c_'); | ||
//Ejemplo5: | //Ejemplo5: | ||
− | $this | + | $this> |
− | + | load_record('Usuario'); | |
//Ejemplo6: | //Ejemplo6: | ||
− | $this | + | $this> |
− | + | load_record('Usuario', 'field: nombre, apellido'); | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</source> | </source> | ||
− | |||
− |