【问题标题】:Mojolicious url_for: absolute pathMojolicious url_for:绝对路径
【发布时间】:2011-06-06 12:15:22
【问题描述】:

我目前正在尝试将我的一个较小的催化剂应用程序移植到 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 生成指向绝对路由的链接。 即“/生成”

谢谢, 格, ldx

【问题讨论】:

    标签: perl catalyst mojolicious


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 确实如此。我想我仍然处于催化剂心态,总是使用 uri_for。但你是对的,我根本不需要 url_for :-)
    【解决方案2】:

    您可以轻松地从 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/
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-11
      • 2010-09-15
      • 2013-04-17
      • 1970-01-01
      • 2012-10-16
      • 2013-07-14
      • 2010-12-17
      • 2018-06-09
      相关资源
      最近更新 更多