Application controller
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');
is_numeric($valor) Evalúa si un campo es numé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. $precio = $this>
request(“precio”);
6. if($this>
is_numeric($precio)==false){
7. Flash::error(“Entrada invalida para precio”);
8. return;
9. }
10. /* ..*/
11. }
12. }
13.?>