在 Catalyst 中显式调用视图
Explicit calling a view in Catalyst
正在阅读http://search.cpan.org/~ether/Catalyst-Manual-5.9009/lib/Catalyst/Manual/Tutorial/02_CatalystBasics.pod我看到了$c->stash(template => 'hello.tt');
。
模板有了,视图在哪?为什么没有明确指定视图?
另外:如何显式调用视图(而不是通过模板名称)?
这可能有点棘手,因为它是极其灵活和简单的 DWIW 的组合。模板名称中的 .tt
表示 Template::Toolkit 是假定的默认值。根本没有必要使用此视图,但在大多数文档中都会使用它。
您可以通过转发到视图来呈现存储/$ctx
中的任何内容:例如 $c->forward($c->view("JSON"));
,或者您可以像这样决定请求周期的其余部分 $c->stash( current_view => "CSV" )
.当然,您必须在应用程序中安装和配置视图。也可以直接使用views-
my $body = $c->view("Xslate")->render($c, "folder/email_template.tx", $params);
一个棘手的部分是您的 end
方法将做什么。
一般推荐的默认值为Catalyst::Action::RenderView。它很聪明(如果你想改变它的行为,它也是灵活的)。例如,如果您设置了重定向,它不会呈现页面,它只会进行重定向。如果您已经生成 $c->response->body
内容,它也会 "just stop" 并相信您已经完成的就是您想要的。
灵活性非常复杂,我真的建议在重新启动的开发服务器中放置一个玩具应用程序 运行 并尝试所有你想更好地理解的东西。 None 它本身就很难,但除非您将其分解成可消化的块,否则这一切都会造成混乱。
正在阅读http://search.cpan.org/~ether/Catalyst-Manual-5.9009/lib/Catalyst/Manual/Tutorial/02_CatalystBasics.pod我看到了$c->stash(template => 'hello.tt');
。
模板有了,视图在哪?为什么没有明确指定视图?
另外:如何显式调用视图(而不是通过模板名称)?
这可能有点棘手,因为它是极其灵活和简单的 DWIW 的组合。模板名称中的 .tt
表示 Template::Toolkit 是假定的默认值。根本没有必要使用此视图,但在大多数文档中都会使用它。
您可以通过转发到视图来呈现存储/$ctx
中的任何内容:例如 $c->forward($c->view("JSON"));
,或者您可以像这样决定请求周期的其余部分 $c->stash( current_view => "CSV" )
.当然,您必须在应用程序中安装和配置视图。也可以直接使用views-
my $body = $c->view("Xslate")->render($c, "folder/email_template.tx", $params);
一个棘手的部分是您的 end
方法将做什么。
一般推荐的默认值为Catalyst::Action::RenderView。它很聪明(如果你想改变它的行为,它也是灵活的)。例如,如果您设置了重定向,它不会呈现页面,它只会进行重定向。如果您已经生成 $c->response->body
内容,它也会 "just stop" 并相信您已经完成的就是您想要的。
灵活性非常复杂,我真的建议在重新启动的开发服务器中放置一个玩具应用程序 运行 并尝试所有你想更好地理解的东西。 None 它本身就很难,但除非您将其分解成可消化的块,否则这一切都会造成混乱。