2009-11-30 3 views
2

Я использую Kohana v3 для веба-проекта, а сегодня я обнаружил, что это пишет:Kohana 3: использование обслуживаемых маршрутов

echo Html::anchor('user/view/'.$user->id, "See user's profile"); 

Если я переименовать метод action_view в контроллере пользователя, ссылка будет сломана. Чтобы избежать этого, я создал функцию в модели пользователя, которая возвращает URL, используемый для просмотра профиля пользователя:

echo Html::anchor($user->url_view(), "See user's profile"); 

Там есть другой (уборщик) способ сделать это (по аналогии с Джанго url() и {% url %})?

PS: Извините, мой английский.

ответ

7

Да, вы хотите обратную маршрутизацию с использованием имени маршрута. Попробуйте что-то вроде этого:

echo Html::anchor(
    Route::get('your_route_name')->uri(array('id'=>$user->id)), 
    "See user's profile" 
); 
+1

Большое спасибо, я не знал о Класс маршрута. – dusan

0

что вам нужно, это обратная маршрутизация. у вас есть маршрут «имя» (с параметрами в конечном итоге), и вы связываете его с парой module/action или с любым/path.

, то вы используете это название маршрута вместо прямого пути управления/действия, чтобы в будущем вы могли изменить название действий, как вам нравится.

here's a page that describes this. имейте в виду, что в kohana 2.x обратная маршрутизация не поддерживается (поэтому, когда он ссылается на 2.3, он действительно означает 3.x)

+2

Вы правы относительно обратного маршрутизации, но этот связанный пример устарел. Лучшие ресурсы - это официальная информация: http://v3.kohanaphp.com/guide/ и неофициальная вики: http://kerkness.ca/wiki/doku.php – rick