Diferencia entre revisiones de «Application controller»
(Página creada con 'ApplicationController Es la clase principal utilizada para crear controladores, que son la primera parte del modelo MVC. Contiene métodos importantes para facilitar la interac...') |
|||
Línea 1: | Línea 1: | ||
− | ApplicationController | + | '''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 | ||
Línea 10: | Línea 10: | ||
• Es sencilla de usar | • Es sencilla de usar | ||
− | Métodos de la Clase ApplicationController | + | '''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) | + | '''Render($view)''' |
Visualiza una vista que pertenece al mismo controlador. Ejemplo: | Visualiza una vista que pertenece al mismo controlador. Ejemplo: | ||
− | <source lang=php line | + | <source lang=php line> |
− | + | 1. <?php | |
2. | 2. | ||
3. class ProductosController extends ApplicationController { | 3. class ProductosController extends ApplicationController { | ||
Línea 28: | Línea 28: | ||
10. | 10. | ||
11.?> | 11.?> | ||
+ | </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 line> | ||
1. <?php | 1. <?php | ||
2. | 2. | ||
Línea 47: | Línea 51: | ||
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) | + | '''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 | ||
+ | pasar al array asociativo. | ||
+ | |||
+ | '''Request($value)''' | ||
+ | Obtiene acceso orientado a objetos a los valores de $_REQUEST, $value es el índice para | ||
+ | pasar al array asociativo. | ||
+ | |||
+ | '''Render_partial($name)''' | ||
+ | Visualiza una vista parcial (partial) que pertenece al mismo controlador. Ejemplo: | ||
+ | <source lang=php line> | ||
+ | 1. <?php | ||
+ | 2. | ||
+ | 3. class ProductosController extends ApplicationController { | ||
+ | 4. | ||
+ | 5. function index(){ | ||
+ | 6. $this> | ||
+ | render_partial('mostrar_menu'); | ||
+ | 7. }//fin del metodo | ||
+ | 8. | ||
+ | 9. }//fin de la clase | ||
+ | 10. | ||
+ | 11.?> | ||
+ | </source> | ||
+ | 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. 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: | ||
+ | <source lang=php line> | ||
+ | 1. return $this> | ||
+ | route_to("controller: clientes", "action: consultar", "id:1"); | ||
+ | </source> | ||
+ | |||
+ | El tipo de enrutamiento que realiza es interno, es decir que lo usuarios no notan cuando | ||
+ | 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 | ||
+ | explorador. | ||
+ | Ejemplo: | ||
+ | <source lang=php line> | ||
+ | 1. $this> | ||
+ | redirect(“/productos/query”); | ||
+ | </source> | ||
+ | |||
+ | '''Cache_layout($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 | ||
+ | llamará cuando no encuentre definida alguna acción así es más fácil controlar este tipo | ||
+ | de errores: | ||
+ | <source lang=php line> | ||
+ | 1. <?php | ||
+ | 2. 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> | ||
+ | |||
+ | '''NOTA: '''Ahora en la versión 0.5 se incluye un vista views/not_found.phtml, esto | ||
+ | hace que no se haga necesario la implementacion del metodo not_found, ya | ||
+ | que cuando no exista un controller o una acción se renderizara dicha vista, esta | ||
+ | puede ser totalmente personalizada de manera que sea mas comodo el | ||
+ | desarrollo | ||
+ | |||
+ | '''Set_response($type)''' | ||
+ | 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 | ||
+ | cualquier cabecera html. Es ideal en salidas AJAX o PDF. Otro valor para $type es XML. | ||
+ | <source lang=php line> | ||
+ | 1. <?php | ||
+ | 2. class PruebaController extends ApplicationController { | ||
+ | 3. | ||
+ | 4. function accion_ajax(){ | ||
+ | 5. $this> | ||
+ | set_response(“view”); | ||
+ | 6. } | ||
+ | 7. } | ||
+ | </source> | ||
+ | |||
+ | '''Is_alnum($valor)''' | ||
+ | Evalúa si un campo es alfanumérico o no. Es útil para validar la entrada de datos al | ||
+ | recibirlos por parte de usuarios. | ||
+ | <source lang=php line> | ||
+ | 1. <?php | ||
+ | 2. class PruebaController extends ApplicationController { | ||
+ | 3. | ||
+ | 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> | ||
+ | '''Load_record($record)''' | ||
+ | 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 | ||
+ | |||
+ | '''string: '''este debe corresponder al nombre de un modelo Soporta argumento variable. | ||
+ | |||
+ | '''field:''' campos a cargar separados por coma | ||
+ | |||
+ | '''except:''' campos que no se cargaran separados por coma | ||
+ | |||
+ | '''suffix:''' sufijo para el atributo en el controlador | ||
+ | |||
+ | '''preffix:''' prefijo para el atributo en el controlador | ||
+ | |||
+ | <source lang=php line> | ||
+ | //Ejemplo1: | ||
+ | $usuario = $this> | ||
+ | Usuario> | ||
+ | find(1); | ||
+ | $this> | ||
+ | load_record($usuario); | ||
+ | //Ejemplo2: | ||
+ | $usuario = $this> | ||
+ | Usuario> | ||
+ | find(1); | ||
+ | $this> | ||
+ | load_record($usuario, 'except: id, sexo'); | ||
+ | //Ejemplo3: | ||
+ | $usuario = $this> | ||
+ | Usuario> | ||
+ | find(1); | ||
+ | $this> | ||
+ | load_record($usuario, 'field: nombre, apellido'); | ||
+ | //Ejemplo4: | ||
+ | $usuario = $this> | ||
+ | Usuario> | ||
+ | find(1); | ||
+ | $this> | ||
+ | load_record($usuario, 'preffix: c_'); | ||
+ | //Ejemplo5: | ||
+ | $this> | ||
+ | load_record('Usuario'); | ||
+ | //Ejemplo6: | ||
+ | $this> | ||
+ | load_record('Usuario', 'field: nombre, apellido'); | ||
+ | </source> |
Revisión del 21:31 1 jun 2009
ApplicationController
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 modelos y la presentación. 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. • 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.
Render($view) Visualiza una vista que pertenece al mismo controlador. Ejemplo:
1. <?php
2.
3. class ProductosController extends ApplicationController {
4.
5. function index(){
6. $this>
render('consultar');
7. }
8.
9. } //fin de la clase
10.
11.?>
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
1. <?php
2.
3. class ProductosController extends ApplicationController {
4.
5. function index(){
6. $this>
redirect('facturas/nueva', 2);
7. }
8.
9. }
10.
11.?>
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 pasar al array asociativo.
Get($value) Obtiene acceso orientado a objetos a los valores de $_GET, $value es el índice para pasar al array asociativo.
Request($value) Obtiene acceso orientado a objetos a los valores de $_REQUEST, $value es el índice para pasar al array asociativo.
Render_partial($name) Visualiza una vista parcial (partial) que pertenece al mismo controlador. Ejemplo:
1. <?php
2.
3. class ProductosController extends ApplicationController {
4.
5. function index(){
6. $this>
render_partial('mostrar_menu');
7. }//fin del metodo
8.
9. }//fin de la clase
10.
11.?>
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. 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:
1. return $this>
route_to("controller: clientes", "action: consultar", "id:1");
El tipo de enrutamiento que realiza es interno, es decir que lo usuarios no notan cuando 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 explorador. Ejemplo:
1. $this>
redirect(“/productos/query”);
Cache_layout($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 llamará cuando no encuentre definida alguna acción así es más fácil controlar este tipo de errores:
1. <?php
2. 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.?>
NOTA: Ahora en la versión 0.5 se incluye un vista views/not_found.phtml, esto hace que no se haga necesario la implementacion del metodo not_found, ya que cuando no exista un controller o una acción se renderizara dicha vista, esta puede ser totalmente personalizada de manera que sea mas comodo el desarrollo
Set_response($type) 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 cualquier cabecera html. Es ideal en salidas AJAX o PDF. Otro valor para $type es XML.
1. <?php
2. class PruebaController extends ApplicationController {
3.
4. function accion_ajax(){
5. $this>
set_response(“view”);
6. }
7. }
Is_alnum($valor) Evalúa si un campo es alfanumérico o no. Es útil para validar la entrada de datos al recibirlos por parte de usuarios.
1. <?php
2. class PruebaController extends ApplicationController {
3.
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.?>
Load_record($record) 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
string: este debe corresponder al nombre de un modelo Soporta argumento variable.
field: campos a cargar separados por coma
except: campos que no se cargaran separados por coma
suffix: sufijo para el atributo en el controlador
preffix: prefijo para el atributo en el controlador
//Ejemplo1:
$usuario = $this>
Usuario>
find(1);
$this>
load_record($usuario);
//Ejemplo2:
$usuario = $this>
Usuario>
find(1);
$this>
load_record($usuario, 'except: id, sexo');
//Ejemplo3:
$usuario = $this>
Usuario>
find(1);
$this>
load_record($usuario, 'field: nombre, apellido');
//Ejemplo4:
$usuario = $this>
Usuario>
find(1);
$this>
load_record($usuario, 'preffix: c_');
//Ejemplo5:
$this>
load_record('Usuario');
//Ejemplo6:
$this>
load_record('Usuario', 'field: nombre, apellido');