perl - 在 Catalyst 中显式调用 View

标签 perl templates view catalyst

阅读 http://search.cpan.org/~ether/Catalyst-Manual-5.9009/lib/Catalyst/Manual/Tutorial/02_CatalystBasics.pod我看到 $c->stash(template => 'hello.tt');

模板有了, View 在哪?为什么没有明确指定 View ?

另外:如何显式调用 View (而不是通过模板名称)?

最佳答案

这可能有点棘手,因为它是极其灵活和简单的 DWIW 的组合。 .tt在模板名称中表示 Template::Toolkit是假定的默认值。根本没有必要使用此 View ,但在大多数文档中都会使用它。

您可以渲染存储中的任何内容/$ctx通过转发到 View :$c->forward($c->view("JSON"));例如,或者您可以像这样决定请求周期的剩余时间 $c->stash( current_view => "CSV" ) .当然,您必须在应用程序中安装和配置 View 。您也可以直接使用 View -

my $body = $c->view("Xslate")->render($c, "folder/email_template.tx", $params);

一个棘手的部分变成了你的 end方法就可以了。

一般推荐的默认值是Catalyst::Action::RenderView .它很聪明(如果你想改变它的行为,它也是灵活的)。例如,如果您设置了重定向,它不会呈现页面,它只会进行重定向。如果你已经生成了$c->response->body内容它也会“停止”并相信你已经完成的就是你想要的。

在灵 active 方面有足够的复杂性,我真的建议将一个玩具应用放在一起,在重新启动的开发服务器上运行,并尝试所有你想更好地理解的东西。这些本身并没有那么难,但除非您将其分解成易于消化的 block ,否则它们都会加起来造成困惑。

关于perl - 在 Catalyst 中显式调用 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37548181/

相关文章:

perl - 从文件中读取第3行到第5行,如何将这些行号变成变量?

perl - 在 Perl 中调用函数的方法

Javascript 正则表达式与 Perl 正则表达式的比较

c++ - 如何模仿模板变量声明

c++ - 嵌套的命名空间和不明确的符号

Android 平滑滚动到底部

mysql - 从单独表中的键/值对中选择不同的值

python - 什么是字典 View 对象?

android - 当 android :targetSdkVersion ="17" not specified in manifest. xml for Android 4.1.2 (Samsung Galaxy s2 gt-i9100) 时, View (按钮)不可见

html - 给定 URL,如何找到网站的 "main"图片?