2010-05-04 12 views

Respuesta

31

Desde el interior de un controlador:

$this->request->controller

$this->request->action

$this->request->param('paramname')

A diferencia de los argumentos en K2 K3 se accede a través kays la que se definen en las rutas.

Tomemos por ejemplo esta url:

Route::set('default', '(<controller>(/<action>(/<id>)))')  
    ->defaults(array('controller' => 'welcome', 'action' => 'index')); 

Para acceder al argumento "id" que se dice

$this->request->param('id')

Usted no puede acceder a los argumentos controlador/acción del parámetro() método.

Nota, también puede usar Request::instance() para obtener la instancia de solicitud global (o "maestra").

Para más información ver el K3 guide

+0

impresionante, gracias – n00b

+0

¿Significa esto que por cada "acción" tienes que definir un conjunto de claves para cada parámetro? Eso suena como un montón de trabajo innecesario. Leí que simplemente pasar argumentos a acciones como en ** acción (arg1, arg2, ...) ** está obsoleto en K3.1 y se eliminará en 3.2 – techexpert

+1

@techexpert Cada argumento que quiera pasar a través de las necesidades uri para ser definido en la ruta. Si está utilizando muchos parámetros, tal vez debería utilizar la cadena de consulta en su lugar. – Matt

3

Para aquellos que utilizan Kohana> = 3.1, que podría ser útil a notar que algunas propiedades de la solicitud objeto se han convertido en los métodos.

E.g. Request::controller ahora es Request::controller() (o $this->request->controller() cuando está dentro de un controlador).

Para obtener más información, me gustaría hacer referencia a la guía de Kohana actualizar el http://kohanaframework.org/3.1/guide/kohana/upgrading

24

respuesta actualizada para Kohana 3.2, desde el user guide:

// From within a controller: 
$this->request->action(); 
$this->request->controller(); 
$this->request->directory(); 

// Can be used anywhere: 
Request::current()->action(); 
Request::current()->controller(); 
Request::current()->directory(); 
Cuestiones relacionadas