Как получить URL-адрес действия в Kohana 3? - PullRequest
1 голос
/ 01 ноября 2011

Есть ли официальный метод или помощник, который я могу использовать для получения URL-адреса действия в представлении?

Например, мне нравится получать URL-адрес / controller / action1, когда я нахожусь в представлении /controller/action0.

Я знаю, что могу использовать следующий код, но мне интересно, находится ли он уже в ядре Kohana.

function getControllerActionURL($controller,$action)
{
   return URL::site(false,true).$controller."/".$action;
}

1 Ответ

3 голосов
/ 01 ноября 2011

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
 ));

. Request::uri() использует текущие параметры маршрута по умолчанию, поэтому, если вы хотите изменить только action (или id и т. Д.), Вы можете пропустить текущие параметры :

 $uri = Request::instance() // or Request::current()
     ->uri(array(
           'action'     => $action
 ));

Передавая только action, мы просим Request использовать его текущие значения ($this->controller для имени контроллера, $this->directory для каталога и т. Д.)

PS. Прочитайте это .

PPS. В Kohana v3.2 Request::uri() вызов возвращает текущий URI , поэтому вам нужно позвонить Request::current()->route()->uri(...);

...