In Kohana 2 you could easily get that information like this:
echo router::$controller;
echo router::$method;
echo router::$arguments[0-x];
Any i开发者_StackOverflow中文版dea how that works in Kohana 3?
Thanks in advance!
From inside a controller:
$this->request->controller
$this->request->action
$this->request->param('paramname')
Unlike K2 arguments in K3 are accessed via kays which you define in your routes.
Take for example this url:
Route::set('default', '(<controller>(/<action>(/<id>)))')
->defaults(array('controller' => 'welcome', 'action' => 'index'));
To access the "id" argument you'd call
$this->request->param('id')
You can't access the controller / action arguments from the param() method.
Note, you can also use Request::instance()
to get the global (or "master") request instance.
For more information see the K3 guide
Updated answer for Kohana 3.2, from the 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();
For those using Kohana >= 3.1, it might be useful to notice that some properties of the Request object have been converted to methods.
E.g. Request::controller
is now Request::controller()
(or $this->request->controller()
when you're inside a controller).
For more information, I'd like to reference to the Kohana upgrade guide on http://kohanaframework.org/3.1/guide/kohana/upgrading
精彩评论