Diferencia entre revisiones de «Application controller»
(No se muestran 42 ediciones intermedias de 2 usuarios) | |||
Línea 4: | Línea 4: | ||
modelo MVC. Contiene métodos importantes para facilitar la interacción entre éstos, los | modelo MVC. Contiene métodos importantes para facilitar la interacción entre éstos, los | ||
modelos y la presentación. | modelos y la presentación. | ||
+ | |||
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 14: | Línea 18: | ||
=='''Render($view)'''== | =='''Render($view)'''== | ||
− | Visualiza una vista que pertenece al mismo controlador. Ejemplo: | + | Visualiza una vista que pertenece al mismo controlador. |
− | <source lang=php | + | |
− | + | Ejemplo: | |
− | + | <source lang=php> | |
− | + | <?php | |
− | + | ||
− | + | class ProductosController extends ApplicationController { | |
− | + | ||
− | render('consultar'); | + | function index(){ |
− | + | $this->render('consultar'); | |
− | + | } | |
− | + | ||
− | + | } //fin de la clase | |
− | + | ||
+ | ?> | ||
</source> | </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 | ||
Línea 34: | Línea 39: | ||
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 | + | <source lang=php> |
<?php | <?php | ||
Línea 64: | Línea 69: | ||
=='''Render_partial($name)'''== | =='''Render_partial($name)'''== | ||
Visualiza una vista parcial (partial) que pertenece al mismo controlador. Ejemplo: | Visualiza una vista parcial (partial) que pertenece al mismo controlador. Ejemplo: | ||
− | <source lang=php | + | <source lang=php> |
<?php | <?php | ||
Línea 80: | Línea 85: | ||
=='''Route_to([params: valor])'''== | =='''Route_to([params: valor])'''== | ||
− | Hace el enrutamiento desde un controlador a otro, o desde una acción a otra. Recibe los | + | Hace el enrutamiento desde un controlador a otro, o desde una acción a otra. |
− | parámetros con nombre: | + | |
− | • controller: A qué controlador se va a redireccionar | + | Recibe los parámetros con nombre: |
− | • action: A que acción se va a redireccionar | + | |
− | • id: Id de la redirección | + | • '''controller''': A qué controlador se va a redireccionar |
+ | |||
+ | • '''action''': A que acción se va a redireccionar | ||
+ | |||
+ | • '''id''': Id de la redirección | ||
+ | |||
Ejemplo: | Ejemplo: | ||
− | <source lang=php | + | <source lang=php> |
return $this->route_to("controller: clientes", "action: consultar", "id:1"); | return $this->route_to("controller: clientes", "action: consultar", "id:1"); | ||
</source> | </source> | ||
Línea 92: | 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 109: | 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 133: | Línea 151: | ||
=='''Set_response($type)'''== | =='''Set_response($type)'''== | ||
− | Especifica el tipo de respuesta que va a generar el controlador. | + | 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> | |
− | + | <?php | |
− | + | class PruebaController extends ApplicationController { | |
− | + | function accion_ajax(){ | |
− | + | $this->set_response('view'); | |
− | + | } | |
− | + | } | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | $this> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</source> | </source> | ||
− | ==''' | + | =='''Is_alnum($valor)'''== |
− | Evalúa si un campo es | + | 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> | ||
+ | <?php | ||
− | + | class PruebaController extends ApplicationController { | |
− | |||
− | |||
− | |||
− | + | function adicionar(){ | |
− | + | $nombre = $this->request(“nombre”); | |
− | + | if($this->is_alnum($nombre)==false){ | |
− | + | Flash::error(“Entrada invalidad para precio”); | |
− | + | return; | |
− | + | } | |
− | + | /* ..*/ | |
− | + | } | |
− | + | } | |
− | + | ?> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</source> | </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> |
− | + | //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> | </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> | ||
+ | <?php | ||
− | + | class PruebaController extends ApplicationController { | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | function adicionar(){ | |
− | + | $precio = $this->request(“precio”); | |
− | + | if($this->is_numeric($precio)==false){ | |
− | = | + | Flash::error(“Entrada invalida para precio”); |
− | + | return; | |
− | + | } | |
− | + | /* ..*/ | |
− | + | } | |
− | + | } | |
− | + | ?> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</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;
}
/* ..*/
}
}
?>