perl 您的网址(_F):绝对路径

cnjp1d6j  于 2022-11-15  发布在  Perl
关注(0)|答案(2)|浏览(175)

我目前正试图将我的一个较小的催化剂应用程序移植到Mojolicious(只是为了好玩)。
假设我们在一个页面上:http://whatever.com/generate。在该页面上有一个链接,例如“generated”
当使用catalyst(带有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”

r6hnlfcb

r6hnlfcb1#

url_for生成相对于应用根目录的url。这样做是为了可移植性:你可以把你的应用程序在任何网址和你的链接不会被破坏。
如果你需要一个指向绝对路径的链接,为什么需要url_for than呢?你可以只使用字符串'/generated'
另一方面,如果您真的需要Mojo::URL对象,您可以使用

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

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

6rqinv9w

6rqinv9w2#

你可以很容易地从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/

相关问题