Kohana 3 get current controller / действие / аргументы

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

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

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

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

3 ответов


внутри контроллера:

$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() получить глобальный (или" главный") экземпляр запроса.

для получения дополнительной информации см. руководство K3


обновленный ответ для Кохана 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();

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

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

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