我正在使用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插件,那么它会容易得多。例如。从模板foobar调用就像

条模板:

Hello @who


foo模板:

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


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

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

10-07 19:23
查看更多