Кохана 3 получить текущий контроллер/действие/аргументы


В Kohana 2 вы можете легко получить эту информацию следующим образом:

echo router::$controller;
echo router::$method;
echo router::$arguments[0-x];

Есть идеи, как это работает в Kohana 3?

Заранее спасибо!

Author: n00b, 2010-05-04

3 answers

Изнутри контроллера:

$this->request->controller

$this->request->action

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

В отличие от K2, доступ к аргументам в K3 осуществляется через kays, которые вы определяете в своих маршрутах.

Возьмем, к примеру, этот URL-адрес:

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

Чтобы получить доступ к аргументу "идентификатор", вы должны вызвать

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

Вы не можете получить доступ к аргументам контроллера/действия из метода param().

Примечание, вы также можете использовать Request::instance() для получения глобального (или "главного") экземпляра запроса.

Для большего информацию смотрите в руководстве K3

 32
Author: Matt, 2010-05-04 09:51:21

Обновленный ответ для Kohana 3.2 из руководства пользователя :

// 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();
 25
Author: Yarin, 2011-11-04 20:10:27

Для тех, кто использует Kohana>=3.1, может быть полезно заметить, что некоторые свойства объекта запроса были преобразованы в методы.

Например, Request::controller теперь Request::controller() (или $this->request->controller(), когда вы находитесь внутри контроллера).

Для получения дополнительной информации я хотел бы обратиться к руководству по обновлению Kohana на http://kohanaframework.org/3.1/guide/kohana/upgrading

 3
Author: Plankje, 2011-07-28 19:49:22