ldx*_*ldx 9 perl catalyst mojolicious
我目前正试图将我的一个较小的催化剂应用程序移植到Mojolicious(只是为了它的乐趣).
假设我们在页面上:http://whatever.com/generate.在该页面上有一个链接,例如"生成"
使用催化剂(使用TT模板)并将链接定义为
uri_for 'generated'
Run Code Online (Sandbox Code Playgroud)
它将生成一个指向http://whatever.com/generate/generated的链接 但是如果你将其定义为
uri_for '/generated'
Run Code Online (Sandbox Code Playgroud)
它将生成一个指向http://whatever.com/generated的链接
我尝试用Mojolicious'url_for做同样的事情,但似乎工作方式不同.我打电话的时候并没有什么不同
url_for 'generated'
Run Code Online (Sandbox Code Playgroud)
要么
url_for '/generated'
Run Code Online (Sandbox Code Playgroud)
两个调用都生成一个'/ generate/generated'的链接
所以我的问题是:如何让url_for生成绝对路径的链接.即'/ generated'
谢谢,Gr,ldx
yko*_*yko 11
url_for生成相对于app root的url.这样做是为了便于携带:您可以将您的应用放在任何网址上,并且您的链接不会被破坏.
如果你需要一个绝对路径的链接,你为什么需要url_for?你只能使用一个字符串'/generated'.
另一方面,如果你真的需要Mojo :: URL对象,你可以得到它
<%= url_for->path('/generated') %>
Run Code Online (Sandbox Code Playgroud)
url_for 当没有params调用时返回当前url
小智 10
您可以从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/
Run Code Online (Sandbox Code Playgroud)