Revisión actual |
Tu texto |
Línea 1: |
Línea 1: |
− | ='''ApplicationController'''=
| + | ApplicationController |
| | | |
| Es la clase principal utilizada para crear controladores, que son la primera parte del | | 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 | | 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 |
− | *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 |
| | | |
− | *Automatiza la interacción entre la lógica y la presentación
| + | Métodos de la Clase ApplicationController |
− | | |
− | *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. | | La clase posee una serie de métodos que son útiles para el trabajo con controladores. |
| | | |
− | =='''Render($view)'''==
| + | Render($view) |
− | Visualiza una vista que pertenece al mismo controlador. | + | Visualiza una vista que pertenece al mismo controlador. Ejemplo: |
− | | + | <source lang=php line |
− | Ejemplo: | + | >1. <?php |
− | <source lang=php> | + | 2. |
− | <?php | + | 3. class ProductosController extends ApplicationController { |
− | | + | 4. |
− | class ProductosController extends ApplicationController { | + | 5. function index(){ |
− | | + | 6. $this> |
− | function index(){
| + | render('consultar'); |
− | $this->render('consultar');
| + | 7. } |
− | }
| + | 8. |
− | | + | 9. } //fin de la clase |
− | } //fin de la clase | + | 10. |
− | | + | 11.?> |
− | ?> | |
− | </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 |
− | | + | 28.1.2 redirect($url, $seconds=0.5) |
− | =='''Redirect($url, $seconds=0.5)'''==
| |
| 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 |
− | | + | 1. <?php |
− | <source lang=php>
| + | 2. |
− | <?php | + | 3. class ProductosController extends ApplicationController { |
− | | + | 4. |
− | class ProductosController extends ApplicationController { | + | 5. function index(){ |
− | | + | 6. $this> |
− | function index(){
| + | redirect('facturas/nueva', 2); |
− | $this->redirect('facturas/nueva', 2);
| + | 7. } |
− | }
| + | 8. |
− | | + | 9. } |
− | } | + | 10. |
− | | + | 11.?> |
− | ?> | |
| </source> | | </source> |
| | | |
| En el ejemplo va a facturas/nueva después de 2 segundos | | En el ejemplo va a facturas/nueva después de 2 segundos |
| | | |
− | =='''Post($value)'''==
| + | Post($value) |
| Obtiene acceso orientado a objetos a los valores de $_POST, $value es el índice para | | Obtiene acceso orientado a objetos a los valores de $_POST, $value es el índice para |
| pasar al array asociativo. | | 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:
| |
− | <source lang=php>
| |
− | <?php
| |
− |
| |
− | class ProductosController extends ApplicationController {
| |
− |
| |
− | function index(){
| |
− | $this->render_partial('mostrar_menu');
| |
− | }//fin del metodo
| |
− |
| |
− | }//fin de la clase
| |
− |
| |
− | ?>
| |
− | </source>
| |
− | 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:
| |
− | <source lang=php>
| |
− | return $this->route_to("controller: clientes", "action: consultar", "id:1");
| |
− | </source>
| |
− |
| |
− | 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
| |
− | <source lang=php>
| |
− | return Router::route_to("controller: clientes", "action: consultar", "id:1");
| |
− | </source>
| |
− |
| |
− | =='''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:
| |
− | <source lang=php>
| |
− | $this->redirect(“/productos/query”);
| |
− | </source>
| |
− |
| |
− | =='''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:
| |
− | <source lang=php>
| |
− | <?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');
| |
− | }
| |
− | }
| |
− | ?>
| |
− | </source>
| |
− |
| |
− | '''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.
| |
− | <source lang=php>
| |
− | <?php
| |
− |
| |
− | class PruebaController extends ApplicationController {
| |
− |
| |
− | function accion_ajax(){
| |
− | $this->set_response('view');
| |
− | }
| |
− | }
| |
− | </source>
| |
− |
| |
− | =='''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.
| |
− | <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>
| |
− |
| |
− | =='''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>
| |
− |
| |
− | =='''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>
| |
− |
| |
− | [[Categoría:Application Controller]]
| |