我目前正试图将我的一个较小的催化剂应用程序移植到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
答案 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/