Могут ли сниппеты принимать параметры в лифте? - PullRequest
12 голосов
/ 28 июня 2011

Есть ли в лифте способ передачи параметров во фрагменты?

Я пытаюсь написать фильтр pluraize для моей страницы, который будет отображать слово «пользователь» или «пользователи» в зависимости от того, сколько их:

1 user
2 users

То, как это работает в Django, называется фильтрами , и они записываются следующим образом:

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

Итак, здесь вы можете видеть множественное число функция принимает целое число num_messages и выводит и соответствующую строку - либо пустые "" или "s".

РЕДАКТИРОВАТЬ: Обратите внимание, что num_messages в этом случае является фактической переменной контекста, переданной в шаблон из представления.

Ответы [ 3 ]

16 голосов
/ 28 июня 2011

Вы можете передавать параметры во фрагменты, да.

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"/>
2 голосов
/ 07 июля 2011

Разве вы не можете сделать это таким образом.

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

и ваш код лифта будет выглядеть примерно так:

class MyClass {
 def render = "num_messages" #> (num_messages + pluralize("message", num_messages))
}
2 голосов
/ 29 июня 2011
<div id="main" class="cl1 cl2 lift:surround?with=default;at=content">

Это также вызов фрагмента с параметрами.

См. Документы лифта: Документы лифта, 3.4.1 Фрагменты в разметке

ВЧтобы указать, что содержимое является динамическим, разметка содержит вызов фрагмента.Это обычно принимает форму class = "someclass someothercss lift: mysnippet".Если атрибут класса содержит lift: xxx, xxx будет преобразован во фрагмент.Фрагмент может принимать атрибуты.Атрибуты закодированы как параметры URL ... смещены на?(знак вопроса), затем имя = значение, разделенные?(вопросительный знак), ;(точка с запятой) или & (амперсанд).имя и значение в кодировке URL.

...