Kohana 3 получает текущий контроллер/действие/аргументы
В Kohana 2 вы можете легко получить такую информацию:
echo router::$controller;
echo router::$method;
echo router::$arguments[0-x];
Любая идея, как это работает в Kohana 3?
Спасибо заранее!
Ответы
Ответ 1
Изнутри контроллера:
$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'));
Для доступа к аргументу "id" вы вызываете
$this->request->param('id')
Вы не можете получить доступ к аргументам контроллера/действия из метода param().
Примечание. Вы также можете использовать Request::instance()
для получения экземпляра запроса global (или "master" ).
Для получения дополнительной информации см. руководство K3
Ответ 2
Обновлен ответ для 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();
Ответ 3
Для тех, кто использует Kohana >= 3.1, было бы полезно заметить, что некоторые свойства объекта Request были преобразованы в методы.
например. Request::controller
теперь Request::controller()
(или $this->request->controller()
, когда вы находитесь внутри контроллера).
Для получения дополнительной информации я хотел бы обратиться к руководству по обновлению Kohana на http://kohanaframework.org/3.1/guide/kohana/upgrading