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> | ||
− | [[ | + | ='''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. |