Как получить URL-адрес действия в Kohana 3?

#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(...) ;