10

我目前正在尝试将我的一个较小的催化剂应用程序移植到 Mojolicious(只是为了好玩)。

假设我们在一个页面上:http ://whatever.com/generate 。在该页面上有一个链接,例如“生成”

使用催化剂(带有 TT 模板)时,您将链接定义为

uri_for 'generated'

它会生成一个链接到http://whatever.com/generate/generated 但是如果你将它定义为

uri_for '/generated'

它将生成一个指向http://whatever.com/generated的链接

我尝试对 Mojolicious 的 url_for 做同样的事情,但它的工作方式似乎有所不同。我打电话都没有区别

url_for 'generated'

或者

url_for '/generated'

两个调用都生成一个指向“/generate/generated”的链接

所以我的问题是:如何让 url_for 生成指向绝对路由的链接。即“/生成”

谢谢,Gr,ldx

4

2 回答 2

11

url_for生成相对于应用根目录的 url。这样做是为了可移植性:您可以将您的应用程序放在任何 url,并且您的链接不会被破坏。

如果您需要指向绝对路径的链接,为什么还需要 url_for 呢?您可以只使用一个字符串'/generated'

另一方面,如果您真的需要 Mojo::URL 对象,您可以使用

<%= url_for->path('/generated') %>

url_for不带参数调用时返回当前 url

于 2011-01-10T13:26:33.253 回答
11

您可以轻松地从 url_for 获取绝对 url。它返回一个 Mojo::URL 对象,所以你可以使用 to_abs 方法:

$ perl -Mojo -E 'a("/" => sub { $s=shift;$s->render(text=>$s->url_for("/")->to_abs) })->start' get /
http://localhost:13733/
于 2012-05-01T17:17:19.320 回答