片段是否可以在电梯中获取参数?

时间:2011-06-28 18:55:23

标签: scala lift

电梯中是否有办法将参数传递给片段?

我正在尝试为我的页面编写一个 pluraize 过滤器,根据有多少来显示单词“user”或“users”:

1 user
2 users

它在Django中的工作方式称为filters,它们的编写如下:

You have {{ num_messages }} message{{ num_messages|pluralize }}.

所以在这里你可以看到 pluralize 函数接受一个整数 num_messages 并输出和相应的字符串 - 空“”或“s”。

编辑:请注意,在这种情况下, num_messages 是一个实际的上下文变量,从视图传递给模板。

3 个答案:

答案 0 :(得分:16)

您可以将参数传递给片段,是的。

class MySnippet {
  def foo: NodeSeq = {
    x = S.attr("myparam") openOr "myparam: Y U NO DEFINED!?"
    <p>I got {x}!</p>
  }
}

使用:

<lift:MySnippet.foo myparam="3"/>

或者,更新的Lift 2.3+风格:

<div class="lift:MySnippet.foo?myparam=3"/>

答案 1 :(得分:2)

<div id="main" class="cl1 cl2 lift:surround?with=default;at=content">

这也是带参数的代码段调用。

请参阅电梯文档:Lift docs, 3.4.1 Snippets in markup

  

为了表明内容是动态的,标记包含一个代码段调用。这通常采用class =“someclass someothercss lift:mysnippet”。如果类属性包含lift:xxx,则xxx将被解析为片段。代码段可能具有属性。属性被编码为URL参数...由? (问号),然后名称=价值,分开? (问号),; (分号)或&amp; (符号)。名称和值是URL编码。

答案 2 :(得分:2)

你不能这样做吗。

<div class="lift:MyClass">
  You have <span class="num_messages"/>.
</div>

你的电梯代码看起来像是:

class MyClass {
 def render = "num_messages" #> (num_messages + pluralize("message", num_messages))
}