片段可以在lift中获取参数吗



lift中有没有将参数传递给代码段的方法?

我正试图为我的页面编写一个pluraize过滤器,根据有多少个单词来显示"用户"或"用户":

1 user
2 users

它在Django中的工作方式被称为过滤器,它们写如下:

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

因此,在这里您可以看到复数函数接受一个整数num_messages并输出一个适当的字符串-空"或"s"。

EDIT:请注意,本例中的num_messages是一个实际的上下文变量,从视图传递到模板。

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

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"/>
<div id="main" class="cl1 cl2 lift:surround?with=default;at=content">

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

参见lift文档:lift文档,3.4.1标记中的代码段

为了指示内容是动态的,标记包含一个代码段调用。它通常采用class="someclass someothercss lift:mysnippet"的形式。如果类属性包含lift:xxx,则xxx将被解析为一个代码段。该片段可能具有属性。属性的编码方式类似URL参数。。。偏移a?(问号),然后name=value,分隔为?(问号);(分号)或&(安培数)。名称和值是URL编码的。

你不能这样做吗。

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

你的电梯代码看起来像:

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

最新更新