2

我正在将 Kohana v3 用于 Web 项目,今天我发现自己在写这个:

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

如果我重命名action_view用户控制器中的方法,链接将被破坏。为了避免这种情况,我在 User 模型中创建了一个函数,该函数返回用于查看用户个人资料的 URL:

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

还有另一种(更清洁的)方法可以做到这一点(类似于 Django 的url()and {% url %})?

PS:对不起,我的英语。

4

2 回答 2

7

是的,您希望使用路由名称进行反向路由。尝试这样的事情:

echo Html::anchor(
   Route::get('your_route_name')->uri(array('id'=>$user->id)), 
   "See user's profile"
);
于 2009-11-30T22:32:29.933 回答
0

你需要什么叫做反向路由。您有一个路线“名称”(最终带有参数),并将其与模块/操作对或任何/路径相关联。

然后你使用这个路由名称而不是直接的控制器/动作路径,这样你就可以在将来随意更改动作的名称。

这是一个描述这个的页面。请注意,在 kohana 2.x 中不支持反向路由(所以当他提到 2.3 时,他实际上是指 3.x)

于 2009-11-30T21:26:32.890 回答