Perl uri_for和uri_for_action之间的差异
Catalyst的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
$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