Perl uri_for和uri_for_action之间的差异

Perl uri_for和uri_for_action之间的差异,perl,catalyst,Perl,Catalyst,Catalyst的$c->uri\u for和$c->uri\u for\u action方法之间有什么区别 用哪一个?为什么呢?dpetrov_uin说: 如果路径可能会改变,最好的办法是 我在下面找到了的$c->uri\u和的$c->uri\u之间的区别 考虑 下午六时 下午1:00 如果的$c->uri\u,url将更改为 http://localhost:3000/Hello/yourcontroller/method_name 但是,对于$c->uri\u for\u actionu

Catalyst的
$c->uri\u for
$c->uri\u for\u action
方法之间有什么区别

用哪一个?为什么呢?

dpetrov_uin说:

如果路径可能会改变,最好的办法是


我在下面找到了的
$c->uri\u和
$c->uri\u之间的区别

考虑

下午六时 下午1:00 如果
$c->uri\u,url将更改为

http://localhost:3000/Hello/yourcontroller/method_name

但是,对于
$c->uri\u for\u action
url更改为

 http://localhost:3000/yourcontroller/method_name

因此,在

@Devendra的
uri_的情况下添加了名称空间。我认为,如果有人阅读您的示例,可能会产生误导

预期路径(而非操作)的uri_。它返回一个绝对URI对象,因此,例如,它对于链接到静态内容或在您不希望更改路径的情况下非常有用

例如,假设您已经在域example.com和subdir abc(example.com/abc/)上部署了应用程序:('/static/images/catalyst.png')
将返回example.com/abc/static/images/catalyst.pn,或者例如:('/contact-us-today')将返回example.com/contact-us-today。如果您以后决定将应用程序部署到另一个子目录下或在/处,您仍然会得到正确的链接


假设您的“联系我们”操作如下所示:
子联系人:路径(“/contact us today”):Args(0){…}
,然后您决定将/contact us today改为just/contact us。如果您使用了(“/今天联系我们”)的
uri\u,您需要查找并更改指向此url的所有行。但是,您可以使用
$c->uri\u作为操作('/controller/action\u name')
,它将返回正确的url。

uri\u for
也可用于操作,即
$c->uri\u for('/controller/action\u name')
也会起作用。事实上这就是问题所在。除了
名称空间
之外,我找不到它们(
uri\u for
uri\u for\u action
)行为/工作之间的任何区别。请检查并回复。虽然您在使用
方法\u name
这一点上是正确的,并且不匹配直接url。阅读文档似乎是这样的:)我只是从来没有这样使用过。很抱歉,如果我把你搞糊涂了,
$c->uri\u for\u action
只是
$c->uri\u for
的一个小包装,如果路径没有解析为已知操作,它就会失败。如果第一个参数是动作对象,
$c->uri\u for
仍被调用,并且可以在第一个位置使用。您可以在
lib/Catalyst.pm
中找到它。
http://localhost:3000/Hello/yourcontroller/method_name
 http://localhost:3000/yourcontroller/method_name