Edición de «Application controller»

De KumbiaPHP Framework Wiki

Advertencia: no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si inicias sesión o creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.

Puedes deshacer la edición. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces guarda los cambios para así efectuar la reversión.

Revisión actual Tu texto
Línea 247: Línea 247:
 
</source>
 
</source>
  
[[Categoría:Application Controller]]
+
='''Obtener valores desde el controller'''=
 +
 
 +
Las URLs de Kumbia están caracterizadas por tener varias partes cada una de ellas con una función conocida.
 +
 
 +
Para obtener desde un controlador los valores que vienen en la URL podemos usar algunas propiedades útiles en el controlador:
 +
 
 +
Ejemplo1:
 +
 
 +
'''http://www.kumbiaphp.com/aplicacion/productos/buscar/12'''
 +
 
 +
El sitio es: '''kumbiaphp.com'''
 +
 
 +
La aplicación es: '''aplicacion'''
 +
 
 +
El controlador es: '''productos'''
 +
 
 +
La acción es: '''buscar'''
 +
 
 +
El valor para id es: '''12'''
 +
 
 +
Nuestro controlador '''aplicación/productos_controller.php''' luce así:
 +
<source lang=php>
 +
<?php
 +
 
 +
class ProductosController extends ApplicactionController {
 +
 
 +
  public function buscar($id){
 +
    /* */
 +
  }
 +
}
 +
 
 +
?>
 +
</source>
 +
 
 +
Dentro del método buscar podemos obtener el valor de id osea 12 en nuestro ejemplo
 +
colocando un parámetro al controlador '''$id''' podemos recoger este valor y utilizarlo
 +
internamente.
 +
 
 +
Otras formas de hacer esto es utilizar los métodos '''post, get o request''' así:
 +
<source lang=php>
 +
public function buscar(){
 +
  $id = $this->request(“id”);
 +
  // o también
 +
  $id = $this->id;
 +
}
 +
</source>
 +
 
 +
=='''¿Cómo saber el nombre del controlador actual?'''==
 +
<source lang=php>
 +
public function buscar(){
 +
  $controlador = $this->controller_name;
 +
}
 +
</source>
 +
 
 +
=='''¿Cómo saber el nombre de la acción actual?'''==
 +
<source lang=php>
 +
public function buscar(){
 +
  $accion = $this->action_name;
 +
}
 +
</source>
 +
 
 +
Ahora veamos el siguiente ejemplo:
 +
 
 +
'''http://www.kumbiaphp.com/aplicacion/registro/buscar_fecha/2006/12/01'''
 +
 
 +
El sitio es: '''kumbiaphp.com'''
 +
 
 +
La aplicación es: '''aplicacion'''
 +
 
 +
El controlador es: '''registro'''
 +
 
 +
La acción es: '''buscar_fecha'''
 +
 
 +
La mejor forma de recoger estos valores es de la siguiente forma:
 +
<source lang=php>
 +
<?php
 +
 
 +
class RegistroController extends ApplicactionController {
 +
 
 +
  public function buscar_fecha($año, $mes, $dia){
 +
    /* */
 +
  }
 +
}
 +
 
 +
?>
 +
</source>
 +
 
 +
Como vemos los valores adicionales en la URL son automáticamente agregados como
 +
parámetros en la acción del controlador.
 +
 
 +
=='''¿Que pasa con id en este ejemplo?'''==
 +
'''$id''' es el valor del primer parámetro siempre así que si nos referimos a éste,
 +
encontramos que tiene el valor 2006.
 +
 
 +
=='''¿Cómo puedo obtener los parámetros extra si no sé cuántos son?'''==
 +
Aquí usamos la propiedad del controlador '''$parameters''' que contiene estos valores así
 +
que el ejemplo podríamos reescribirlo así:
 +
 
 +
<source lang=php>
 +
<?php
 +
 
 +
class RegistroController extends ApplicactionController {
 +
 
 +
  public function buscar_fecha(){
 +
    $año = $this->parameters[0];
 +
    $mes = $this->parameters[1];
 +
    $dia = $this->parameters[2];
 +
    /* ... */
 +
  }
 +
}
 +
</source>
 +
 
 +
Por último podemos ver todos los parámetros que vienen en una url de Kumbia usando la
 +
propiedad del controlador '''$this->all_parameters'''. Una salida de esta variable en el
 +
ejemplo anterior con print_r muestra:
 +
<source lang=php>
 +
Array
 +
(
 +
[0] => registro
 +
[1] => buscar_fecha
 +
[2] => 2006
 +
[3] => 12
 +
[4] => 01
 +
)
 +
</source>
 +
 
 +
='''ApplicationControllerBase'''=
 +
 
 +
Es una clase definida en el archivo controllers/application.php, de esta forma:
 +
<source lang=php>
 +
<?php
 +
 
 +
class ControllerBase {
 +
 
 +
}//fin de la clase
 +
?>
 +
</source>
 +
 
 +
La clase tiene como objetivo permitir que se compartan ciertos métodos y atributos que
 +
deben estar disponibles para todos los controladores de la aplicación.
 +
<source lang=php>
 +
<?php
 +
 
 +
class ControllerBase {
 +
 
 +
  protected function seguridad(){
 +
    /* ... */
 +
  }
 +
 
 +
}//fin de la clase
 +
 
 +
?>
 +
</source>
 +
 
 +
y por ejemplo en el controlador productos podríamos usar este método así:
 +
 
 +
<source lang=php>
 +
<?php
 +
 
 +
class Productos extends ApplicationController {
 +
 
 +
  public function adicionar(){
 +
 
 +
    if($this->seguridad()){
 +
      /* .... */
 +
    }
 +
 
 +
  }
 +
 
 +
}//fin de la clase
 +
 
 +
?>
 +
</source>
 +
 
 +
El método seguridad ahora se encuentra disponible para cualquier controlador.
 +
 
 +
='''Enrutamiento y Redirecciones'''=
 +
 
 +
Kumbia proporciona un poderoso sistema de redireccionamiento que permite cambiar el
 +
flujo de la ejecución de una aplicación entre los controladores MVC.
 +
 
 +
Kumbia permite el re-direccionamiento de 2 formas: '''estático y dinámico'''.
 +
 
 +
=='''¿Por qué re-direccionamiento?'''==
 +
Necesitamos cambiar el flujo de la ejecución entre controladores, básicamente
 +
 
 +
Ejemplos:
 +
*El usuario trata de acceder a una acción que no existe y queremos enviarla a una válida.
 +
 
 +
*El usuario de la aplicación no tiene privilegios para continuar ejecutando determinada acción y debemos enviarlo a otra
 +
 
 +
=='''Estático'''==
 +
El direccionamiento estático ocurre en el archivo forms/config/routes.ini en donde le decimos al framework cuándo debe redireccionar de acuerdo a los controladores y/o acciones solicitadas.
 +
El archivo config/routes.ini se ve así:
 +
<source lang=ini>
 +
; Usa este archivo para definir el enrutamiento estático entre
 +
; controladores y sus acciones
 +
;
 +
; Un controlador se puede enrutar a otro controlador utilizando '*' como
 +
; comodín así:
 +
; controlador1/accion1/valor_id1 = controlador2/accion2/valor_id2
 +
;
 +
; Ej:
 +
; Enrutar cualquier petición a posts/adicionar a posts/insertar/*
 +
; posts/adicionar/* = posts/insertar/*
 +
;
 +
; Enrutar cualquier petición a cualquier controlador en la acción
 +
; adicionar a posts/adicionar/*
 +
; */adicionar/* = posts/insertar/*
 +
 
 +
[routes]
 +
prueba/ruta1/* = prueba/ruta2/*
 +
prueba/ruta2/* = prueba/ruta3/*
 +
</source>
 +
Cualquier política definida en este archivo tiene menos relevancia sobre un
 +
direccionamiento dinámico.
 +
 
 +
=='''Dinámico'''==
 +
Ocurre cuando en ejecución necesitamos cambiar el flujo normal y pasar a otro controlador o a otra acción.
 +
 
 +
El principal método para hacer esto es usar el método route_to:
 +
==route_to([params: valor])==
 +
Recibe los parámetros con nombre:
 +
 
 +
*'''controller:''' A que controlador se va a redireccionar
 +
 
 +
*'''action:''' A que acción se va a redireccionar
 +
 
 +
*'''id:''' Id de la redirección
 +
<source lang=php>
 +
return $this->route_to("controller: clientes", "action: consultar", "id:1");
 +
</source>
 +
No todos los parámetros son obligatorios sólo el que sea necesario.
 +
 
 +
'''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>

Ten en cuenta que todas las contribuciones a KumbiaPHP Framework Wiki pueden ser editadas, modificadas o eliminadas por otros colaboradores. Si no deseas que las modifiquen sin limitaciones, no las publiques aquí.
Al mismo tiempo, asumimos que eres el autor de lo que escribiste, o lo copiaste de una fuente en el dominio público o con licencia libre (véase Proyecto:Derechos de autor para más detalles). ¡No uses textos con copyright sin permiso!

Para editar esta página, responde la pregunta que aparece abajo (más información):

Cancelar Ayuda de edición (se abre en una ventana nueva)