Diferencia entre revisiones de «Application controller»
(No se muestran 24 ediciones intermedias del mismo usuario) | |||
Línea 7: | Línea 7: | ||
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'''= | ='''Métodos de la Clase ApplicationController'''= | ||
Línea 102: | Línea 102: | ||
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. | ||
+ | |||
+ | '''Aviso:''' | ||
+ | En la 0.5 en adelante es mejor usar Router::route_to | ||
+ | <source lang=php> | ||
+ | return Router::route_to("controller: clientes", "action: consultar", "id:1"); | ||
+ | </source> | ||
=='''Redirect($url_controlador)'''== | =='''Redirect($url_controlador)'''== | ||
− | Realiza un redireccionamiento a otro controlador/accion mediante HTTP. Es útil cuando | + | Realiza un redireccionamiento a otro controlador/accion mediante HTTP. |
− | queremos hacer una real redirección que incluso cambie la URL que aparece en el | + | |
+ | 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> |
$this->redirect(“/productos/query”); | $this->redirect(“/productos/query”); | ||
</source> | </source> | ||
Línea 119: | Línea 127: | ||
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> |
<?php | <?php | ||
Línea 143: | Línea 151: | ||
=='''Set_response($type)'''== | =='''Set_response($type)'''== | ||
− | Especifica el tipo de respuesta que va a generar el controlador. Cuando es el valor de | + | Especifica el tipo de respuesta que va a generar el controlador. |
− | $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. | + | 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. |
− | <source lang=php | + | |
+ | Es ideal en salidas AJAX o PDF. Otro valor para $type es XML. | ||
+ | <source lang=php> | ||
<?php | <?php | ||
Línea 158: | Línea 168: | ||
=='''Is_alnum($valor)'''== | =='''Is_alnum($valor)'''== | ||
− | Evalúa si un campo es alfanumérico o no. Es útil para validar la entrada de datos al | + | Evalúa si un campo es alfanumérico o no. |
− | recibirlos por parte de usuarios. | + | |
− | <source lang=php | + | Es útil para validar la entrada de datos al recibirlos por parte de usuarios. |
+ | <source lang=php> | ||
<?php | <?php | ||
Línea 181: | Línea 192: | ||
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. | |
− | + | '''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 | + | <source lang=php> |
//Ejemplo1: | //Ejemplo1: | ||
$usuario = $this->Usuario->find(1); | $usuario = $this->Usuario->find(1); | ||
$this->load_record($usuario); | $this->load_record($usuario); | ||
+ | |||
//Ejemplo2: | //Ejemplo2: | ||
$usuario = $this->Usuario->find(1); | $usuario = $this->Usuario->find(1); | ||
$this->load_record($usuario, 'except: id, sexo'); | $this->load_record($usuario, 'except: id, sexo'); | ||
+ | |||
//Ejemplo3: | //Ejemplo3: | ||
$usuario = $this->Usuario->find(1); | $usuario = $this->Usuario->find(1); | ||
$this->load_record($usuario, 'field: nombre, apellido'); | $this->load_record($usuario, 'field: nombre, apellido'); | ||
+ | |||
//Ejemplo4: | //Ejemplo4: | ||
$usuario = $this->Usuario->find(1); | $usuario = $this->Usuario->find(1); | ||
$this->load_record($usuario, 'preffix: c_'); | $this->load_record($usuario, 'preffix: c_'); | ||
+ | |||
//Ejemplo5: | //Ejemplo5: | ||
$this->load_record('Usuario'); | $this->load_record('Usuario'); | ||
+ | |||
//Ejemplo6: | //Ejemplo6: | ||
$this->load_record('Usuario', 'field: nombre, apellido'); | $this->load_record('Usuario', 'field: nombre, apellido'); | ||
Línea 211: | Línea 227: | ||
=='''is_numeric($valor)'''== | =='''is_numeric($valor)'''== | ||
− | Evalúa si un campo es numérico o no. Es útil para validar la entrada de datos al recibirlos | + | Evalúa si un campo es numérico o no. |
− | por parte de usuarios. | + | |
− | <source lang=php | + | Es útil para validar la entrada de datos al recibirlos por parte de usuarios. |
+ | <source lang=php> | ||
<?php | <?php | ||
Línea 230: | Línea 247: | ||
</source> | </source> | ||
− | + | [[Categoría:Application Controller]] | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
Revisión actual del 02:13 6 jun 2009
Sumario
- 1 ApplicationController
- 2 Métodos de la Clase ApplicationController
- 2.1 Render($view)
- 2.2 Redirect($url, $seconds=0.5)
- 2.3 Post($value)
- 2.4 Get($value)
- 2.5 Request($value)
- 2.6 Render_partial($name)
- 2.7 Route_to([params: valor])
- 2.8 Redirect($url_controlador)
- 2.9 Cache_layout($minutes)
- 2.10 Not_found($controller, $action)
- 2.11 Set_response($type)
- 2.12 Is_alnum($valor)
- 2.13 Load_record($record)
- 2.14 is_numeric($valor)
ApplicationController[editar]
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[editar]
La clase posee una serie de métodos que son útiles para el trabajo con controladores.
Render($view)[editar]
Visualiza una vista que pertenece al mismo controlador.
Ejemplo:
<?php
class ProductosController extends ApplicationController {
function index(){
$this->render('consultar');
}
} //fin de la clase
?>
En este caso se visualizaría la vista views/productos/consultar.phtml
Redirect($url, $seconds=0.5)[editar]
Redirecciona la ejecución a otro controlador en un tiempo de ejecución determinado
<?php
class ProductosController extends ApplicationController {
function index(){
$this->redirect('facturas/nueva', 2);
}
}
?>
En el ejemplo va a facturas/nueva después de 2 segundos
Post($value)[editar]
Obtiene acceso orientado a objetos a los valores de $_POST, $value es el índice para pasar al array asociativo.
Get($value)[editar]
Obtiene acceso orientado a objetos a los valores de $_GET, $value es el índice para pasar al array asociativo.
Request($value)[editar]
Obtiene acceso orientado a objetos a los valores de $_REQUEST, $value es el índice para pasar al array asociativo.
Render_partial($name)[editar]
Visualiza una vista parcial (partial) que pertenece al mismo controlador. Ejemplo:
<?php
class ProductosController extends ApplicationController {
function index(){
$this->render_partial('mostrar_menu');
}//fin del metodo
}//fin de la clase
?>
En este caso se visualizaría la vista parcial views/productos/_mostrar_menu.phtml
Route_to([params: valor])[editar]
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:
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.
Aviso: En la 0.5 en adelante es mejor usar Router::route_to
return Router::route_to("controller: clientes", "action: consultar", "id:1");
Redirect($url_controlador)[editar]
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:
$this->redirect(“/productos/query”);
Cache_layout($minutes)[editar]
Caché de la vista views/layout/ correspondiente al controlador durante $minutes
Not_found($controller, $action)[editar]
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:
<?php
class PruebaController extends ApplicationController {
function index(){
$this->render_text("Este es el index");
}
function not_found($controller, $action){
Flash::error("No esta definida la accion $action, redireccionando a index...");
return $this->route_to('action: index');
}
}
?>
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)[editar]
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.
<?php
class PruebaController extends ApplicationController {
function accion_ajax(){
$this->set_response('view');
}
}
Is_alnum($valor)[editar]
Evalúa si un campo es alfanumérico o no.
Es útil para validar la entrada de datos al recibirlos por parte de usuarios.
<?php
class PruebaController extends ApplicationController {
function adicionar(){
$nombre = $this->request(“nombre”);
if($this->is_alnum($nombre)==false){
Flash::error(“Entrada invalidad para precio”);
return;
}
/* ..*/
}
}
?>
Load_record($record)[editar]
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');
is_numeric($valor)[editar]
Evalúa si un campo es numérico o no.
Es útil para validar la entrada de datos al recibirlos por parte de usuarios.
<?php
class PruebaController extends ApplicationController {
function adicionar(){
$precio = $this->request(“precio”);
if($this->is_numeric($precio)==false){
Flash::error(“Entrada invalida para precio”);
return;
}
/* ..*/
}
}
?>