Diferencia entre revisiones de «Application controller»

De KumbiaPHP Framework Wiki
Línea 218: Línea 218:
 
$this>
 
$this>
 
load_record('Usuario', 'field: nombre, apellido');
 
load_record('Usuario', 'field: nombre, apellido');
 +
</source>
 +
 +
'''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.
 +
<source lang=php line>
 +
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.?>
 
</source>
 
</source>

Revisión del 21:32 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');

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.?>