Mojolicious url_for:绝对路径

时间:2011-01-10 12:13:44

标签: perl catalyst mojolicious

我目前正试图将我的一个较小的催化剂应用程序移植到Mojolicious (只是为了它的乐趣)。

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

使用催化剂(使用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生成绝对路径的链接。 即'/ generated'

感谢, GR, LDX

2 个答案:

答案 0 :(得分:11)

url_for生成相对于app root的网址。这样做是为了便于携带:您可以将您的应用放在任何网址上,并且您的链接不会被破坏。

如果您需要绝对路径的链接,为什么还需要url_for?您只能使用字符串'/generated'

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

来获取它
<%= url_for->path('/generated') %>
在没有参数的情况下调用

url_for会返回当前网址

答案 1 :(得分:10)

您可以轻松地从url_for获取绝对网址。它返回一个Mojo :: URL对象,因此您只需使用to_abs方法:

$ perl -Mojo -E 'a("/" => sub { $s=shift;$s->render(text=>$s->url_for("/")->to_abs) })->start' get /
http://localhost:13733/