Подтвердить что ты не робот

Могут ли отрывки взять параметры в лифте?

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

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

1 user
2 users

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

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

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

EDIT: обратите внимание, что num_messages в этом случае является фактической переменной контекста, переданной в шаблон из представления.

4b9b3361

Ответ 1

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

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

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

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

См. листы-документы: Поднять документы, 3.4.1 Фрагменты в разметке

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

Ответ 3

Разве ты не можешь так поступать.

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

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

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