播放框架“设置”模板标签在文件之间不起作用

Posted

技术标签:

【中文标题】播放框架“设置”模板标签在文件之间不起作用【英文标题】:Play framework 'set' template tag not working between files 【发布时间】:2013-12-05 04:14:38 【问题描述】:

我正在使用 play framework 1.2.5 开发一个项目

我有两个自定义标签文件,一个确实“设置”了一个值

#set foo:'bar' /

另一个文件“获取”这个值来决定是否显示一些标记。

%  if(foo)  %
    #doBody /
%  %

这曾经在以前的游戏版本中工作(不记得是哪个),现在不能工作,我不确定是升级本身还是其他什么东西坏了。

根据模板引擎标签的播放文档,设置应该在不同的文件之间工作:

定义一个值,该值可以在同一个模板或任何带有 get 标签的布局中检索。 http://www.playframework.com/documentation/1.2.3/tags#set

有什么可能出错的线索吗?

提前致谢

【问题讨论】:

即使在最新版本中也应该可以使用。您确定除了 Play 版本没有任何变化吗? 我不知道@i.am.michiel 会四处打听,知道它可能是什么吗? 【参考方案1】:

set 仅适用于将数据传递给扩展模板的子模板,例如

父模板:

<html>
<title>$get 'title'</titl>
...
</html>

子模板:

$extends('parent.html')
$set title: 'My Title'/

要将数据从一个模板传递到另一个模板,您必须将被调用模板定义为标签。有关详细信息,请参阅 play 的文档。注意我不确定标签是否可以扩展另一个标签,很可能是不可能的

如果您使用PlayRythm 插件,那么它会容易得多。例如。从模板 foo 调用到 bar 可以像

一样简单

栏模板:

Hello @who

foo 模板:

@bar("World")
@// or
@bar(who: "world")
@// or
@bar(who: "world")

注意 Rythm 没有单独的标签概念,实际上每个模板都是标签,您可以从另一个模板调用任何模板,甚至可以进行递归调用。您可以在http://fiddle.rythmengine.org/ 上尝试 rythm 的现场互动演示。

声明:我是 Rythm 模板引擎和 Play-Rythm 模块的创建者和维护者

【讨论】:

以上是关于播放框架“设置”模板标签在文件之间不起作用的主要内容,如果未能解决你的问题,请参考以下文章

为啥此样式代码在样式标签之间不起作用?

Django 1.6.1:静态标签不起作用

具有自动播放功能的视频标签在反应中不起作用

JQuery 在 Django 自定义模板标签的模板中不起作用

html select标签在django模板中不起作用

为啥用变量排除标签在机器人框架中不起作用?