2010-05-04 4 views

ответ

31

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

$this->request->controller

$this->request->action

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

В отличие от аргументов К2 в К3 доступны через Kays, которые вы определили в маршрутах.

Возьмем для примера URL:

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

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

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

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

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

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

+0

удивительным, спасибо – n00b

+0

Означает ли это, что для каждого «действия» вам нужно определить набор ключей для каждого параметра? Это звучит как много ненужной работы. Я прочитал, что просто передача аргументов в действия, подобные in ** action (arg1, arg2, ...) **, устарела в K3.1 и будет устранена в 3.2 – techexpert

+1

@techexpert. Каждый аргумент, который вы хотите передать через uri которые будут определены в маршруте. Если вы используете множество параметров, возможно, вы должны использовать строку запроса. – Matt

3

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

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

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

24

Обновленный ответ на Kohana 3.2, из 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(); 
Смежные вопросы