12
votes

Les extraits peuvent-ils prendre des paramètres dans l'ascenseur?

Y a-t-il un moyen de passer des paramètres à passer des paramètres aux extraits?

J'essaie d'écrire un filtre plurainy pour ma page qui affichera le mot "utilisateur" ou "utilisateurs" en fonction de combien il y a: xxx

la façon dont il fonctionne dans Django est appelé filtres et ils sont écrits comme suit: xxx

donc ici vous pouvez voir La fonction de pluralisation prend un entier num_messages et des sorties et une chaîne appropriée - soit vide "" ou "S".

EDIT: Notez que les Num_Messages < / Fort> Dans ce cas, une variable de contexte réelle est transmise au gabarit de la vue.


0 commentaires

3 Réponses :


16
votes

Vous pouvez passer des paramètres à des extraits, oui.

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


7 commentaires

Sauf que l'on ne devrait jamais utiliser open_ !. Au lieu de: VAL X = S.ATTR ("MyParam") Openor "Mec, MyParam n'est pas défini"


HM ... Mais pourrais-je réellement passer une valeur de contexte, comme Num_Messages (ci-dessus) à l'extrait?


Aussi - y a-t-il un moyen de se débrouiller sans ces "cases"? Je ne sais pas comment c'est mieux que l'option - juste plus déroutant.


Aussi que signifie "

j'ai {x}! " signifie? Comment pouvez-vous simplement insérer du code HTML dans le code SCALA comme ça? J'ai essayé - ça marche, mais c'est bizarre!


@Drozzy case est similaire à option , mais a une belle fonctionnalité supplémentaire, comme être capable de porter une défaillance / exception ainsi que d'être < Code> complet (x) ou vide . Je ne suis pas un expert, mais voici une certaine lecture pour regarder: blog.getintheloop.eu/2010/04/16/unStanding-lifts-Blext-Mon ad . Je ne pense pas que vous puissiez éviter case dans l'ascenseur et une fois que vous avez commencé à l'utiliser, vous commencerez à l'apprécier.


@Drozzy "

J'ai {x}! " est un littéral XML qui est une caractéristique du langage Scala (non spécifique au soulevant).


@overthink a laissez-nous Continuer cette discussion dans chat



2
votes
<div id="main" class="cl1 cl2 lift:surround?with=default;at=content">
This is also a snippet invocation with parameters.See lift docs: Lift docs, 3.4.1 Snippets in markup
  In order to indicate that content is dynamic, the markup contains a snippet invocation. That typically takes the form class="someclass someothercss lift:mysnippet". If a class attribute contains lift:xxx, the xxx will be resolved to a snippet. The snippet may take attributes. Attributes are encoded like URL parameters... offset by a ? (question mark), then name=value, separted by ? (question mark), ; (semicolon) or & (ampersand). name and value are URL encoded.

0 commentaires

2
votes

Tu ne peux pas le faire comme ça. XXX PRE>

et votre code de levage ressemblerait à quelque chose comme: p>

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


1 commentaires

Superbes! Je me demande si je pouvais l'injecter en plusieurs identifiants en même temps. Mais c'est une autre question ...