Application controller
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;
}
/* ..*/
}
}
?>