我正在使用Play Framework 1.2.5开发项目
我有两个自定义标签文件,其中一个“设置”值
#{set foo:'bar' /}
另一个“获取”此值的文件决定是否显示某些标记。
%{ if(foo) { %}
#{doBody /}
%{ } }%
这曾经在以前的播放版本中起作用(不记得是哪个版本),现在却不起作用,我不确定这是升级本身还是其他问题。
根据模板引擎标签的播放文档,set应该在不同文件之间工作:
使用get标签定义一个可以在相同模板或任何布局中检索的值。
http://www.playframework.com/documentation/1.2.3/tags#set
关于可能出什么问题的任何线索?
提前致谢
最佳答案
set
仅适用于将数据传递到扩展模板的子模板,例如
父模板:
<html>
<title>${get 'title'}</titl>
...
</html>
子模板:
$extends('parent.html')
${set title: 'My Title'/}
要将数据从一个模板传递到另一模板,您必须将被调用者模板定义为标签。详细信息请参见播放文件。注意我不确定标签是否可以扩展另一个标签,这很可能是不可能的
如果您使用的是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模块的创建者和维护者