#controller #action #kohana-3
#контроллер #Экшен #kohana-3
Вопрос:
Существует ли официальный метод или помощник, который я могу использовать для получения URL-адреса действия в представлении?
Например, мне нравится получать URL-адрес /controller/action1, когда я нахожусь в представлении /controller/action0.
Я знаю, что могу использовать следующий код, но мне интересно, есть ли он уже в ядре Kohana.
function getControllerActionURL($controller,$action)
{
return URL::site(false,true).$controller."/".$action;
}
Ответ №1:
1. Получите URI, используя имя маршрута:
$uri = Route::get('routename')
->uri(array(
'controller' => $controller,
'action' => $action
));
2a.Получить URI, используя основной маршрут:
$uri = Request::instance()
->uri(array(
'controller' => $controller,
'action' => $action
));
2b. То же самое с текущим маршрутом:
$uri = Request::current()
->uri(array(
'controller' => $controller,
'action' => $action
));
2c. Request::uri()
использует текущие параметры маршрута по умолчанию, поэтому, если вы хотите изменить только action
(или id
etc), вы можете пропустить текущие параметры:
$uri = Request::instance() // or Request::current()
->uri(array(
'action' => $action
));
Передавая только an action
, мы просим Request
использовать его текущие значения ( $this->controller
для имени контроллера, $this->directory
для каталога и т. Д.)
PS. Прочитайте это.
PPS. В Kohana v3.2 Request::uri()
вызов возвращает текущий URI, поэтому вам нужно вызвать Request::current()->route()->uri(...)
;