Kohana param () не работает - PullRequest
4 голосов
/ 19 июля 2010

Я использую Kohana 3. Кто-нибудь знает, почему результат param ('controller') равен NULL.

Маршрутизация:

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

URL: http://localhost/application/page/index/1

Параметры звонков:

$param = Request::instance()->param('controller');
echo Kohana::debug($param); //results: NULL
$param = Request::instance()->param('action');
echo Kohana::debug($param); //results: NULL
$param = Request::instance()->param('id');
echo Kohana::debug($param); //results: 1

Ответы [ 2 ]

6 голосов
/ 19 июля 2010

посмотрите в reqeuest.php на строке 622:

// These are accessible as public vars and can be overloaded
unset($params['controller'], $params['action'], $params['directory']);

// Params cannot be changed once matched
$this->_params = $params;

, поэтому строка 695 не может вернуть controller:

public function param($key = NULL, $default = NULL)
{
    return $this->_params[$key];
}

это то, как вы получаете контроллер $controller = Request::instance()->controller; или $controller = $this->request->controller;, если вы внутри контроллера

3 голосов
/ 07 июля 2011

Для всех, кто использует Kohana 3.1, доступ к имени текущего контроллера и действия, подобные этому, внутри контроллера:

$this->request->controller()

$this->request->action()

ИлиВы не в контроллере, вы всегда можете получить доступ к методам текущего запроса, например так: Request::current()->controller()

См. system/classes/kohana/request.php, чтобы узнать больше методов, к которым вы можете получить аналогичный доступ.

...