Obtener valores desde el controller

De KumbiaPHP Framework Wiki

Obtener valores desde el controller[editar]

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í:

<?php

class ProductosController extends ApplicactionController {

  public function buscar($id){
    /* */
  }
}

?>

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í:

public function buscar(){
  $id = $this->request(“id”);
  // o también
  $id = $this->id;
}

¿Cómo saber el nombre del controlador actual?[editar]

public function buscar(){
  $controlador = $this->controller_name;
}

¿Cómo saber el nombre de la acción actual?[editar]

public function buscar(){
  $accion = $this->action_name;
}

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:

<?php

class RegistroController extends ApplicactionController {

  public function buscar_fecha($año, $mes, $dia){
    /* */
  }
}

?>

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?[editar]

$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?[editar]

Aquí usamos la propiedad del controlador $parameters que contiene estos valores así que el ejemplo podríamos reescribirlo así:

<?php

class RegistroController extends ApplicactionController {

  public function buscar_fecha(){
    $año = $this->parameters[0];
    $mes = $this->parameters[1];
    $dia = $this->parameters[2];
    /* ... */
  }
}

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:

Array
(
 [0] => registro
 [1] => buscar_fecha
 [2] => 2006
 [3] => 12
 [4] => 01
)