Perl 将Args向下传递到催化剂链w/$c->;参观
在我的一个Catalyst操作中,我试图在另一个控制器中获取另一个操作的主体响应(HTML)。(为了将一页“嵌入”到另一页中) 我想这样做的方法是Perl 将Args向下传递到催化剂链w/$c->;参观,perl,catalyst,Perl,Catalyst,在我的一个Catalyst操作中,我试图在另一个控制器中获取另一个操作的主体响应(HTML)。(为了将一页“嵌入”到另一页中) 我想这样做的方法是$c->visit。(如果我误解了$c->visit,则不必回答我的其余问题。) 所讨论的操作需要一个arg,但必须在链的下一步执行,如下所示: /equipment/*/assets/widget /assets/captureID (1) -> /assets/base (0) -> /assets/pageData (0) =&g
$c->visit
。(如果我误解了$c->visit,则不必回答我的其余问题。)
所讨论的操作需要一个arg,但必须在链的下一步执行,如下所示:
/equipment/*/assets/widget
/assets/captureID (1)
-> /assets/base (0)
-> /assets/pageData (0)
=> /assets/widget
如您所见,链中只有最后一个操作在查找arg
如果我尝试:
$c->visit('/assets/widget',[$arg]);
我希望它沿着链条向下移动,并将我的$arg交给/assets/captureID。但事实上,它似乎根本没有被传递下去
我哪里误入歧途了?结果是只有捕获物,而不是args被传递到链上 根据该文件: $c->visit($action[,\@捕获,\@参数]) 因此,我能够通过以下方式获得成功:
$c->visit('/assets/widget',[$arg],[$arg])
第一个args数组命中第一个动作并停止,但是第二个数组像我所希望的那样沿着链向下移动
我希望$c->visit('/assets/widget',[],[$arg])
能正常工作,但它不能
然而,在所有这些之后,我意识到我不能仅仅以这种方式抓住身体的反应,这是最终的目标。不管怎样,希望我的鹅追逐对某人有所帮助。正如你所发现的,尸体在那一点上并不存在。您必须调用渲染视图,或者安排/assets/widget直接设置
$c->res->body($foo)
。我发现捕获子请求的主体的想法很不传统,说得委婉一点。我无法想象你会用它做什么,这不会违背好的MVC设计原则
在我看来,/assets/widget中的逻辑需要位于模型中,而不是控制器中,这样它就可以被任何需要它的函数使用
和/或您需要将模板分解为(可重用)组件,以便您计划嵌入的任何内容都可以作为单个呈现过程的一部分来完成
[%- IF foo;
PROCESS widget.tt;
END; -%]