Ho ancora problemi con la convalida del modulo e la creazione di helper in Play 2.0. Ho questa schermata di login che uso insieme a Twitter Bootstrap. Quindi il mio form di login simile a questa:Modulo di convalida e modulo helper
@helper.form(routes.Application.authenticate, 'class -> "form-horizontal") {
<fieldset>
<legend>@Messages("login")</legend>
@if(loginForm.hasGlobalErrors) {
<div class="alert alert-error">
<a class="close" data-dismiss="alert">×</a>
@loginForm.globalError.message
</div>
}
@if(flash.contains("success")) {
<div class="alert alert-success">
<a class="close" data-dismiss="alert">×</a>
@flash.get("success")
</div>
}
@inputText(loginForm("email"), '_label -> "Email")
@inputText(loginForm("password"), '_label -> Messages("login.password"))
<div class="form-actions">
<button type="submit" class="btn btn-success">@Messages("button.doLogin")</button>
@Messages("or")
<a class="btn btn-warning" href="routes.LandingPage.index">@Messages("button.doCancel")</a>
</div>
</fieldset>
}
E mio twitter bootstrap campo assomiglia seguenti:
@(elements: helper.FieldElements)
@**************************************************
* Generate input according twitter bootsrap rules *
**************************************************@
<div class="control-group @if(elements.hasErrors) {error}">
<label class="control-label" for="@elements.id">@elements.label</label>
<div class="controls">
@elements.input
<span class="help-inline">@elements.infos.mkString(", ")</span>
</div>
</div>
Questa è l'uscita:
Quello che non capisco :
1, W hy è il testo della guida visibile tutto te tempo (a destra del campo di immissione)
Il testo aiuto viene dal @elements.infos.mkString(", ")
. Quindi l'eliminazione di questa riga cancellerà il testo della guida. Oppure puoi passare una stringa vuota per sopprimere il testo della guida visibile: '_help -> ""
2, Come mostrare solo il testo della guida in caso di errore?
testo della guida può essere aggiunto quando si usa questo codice: @elements.errors(elements.lang).mkString(", ")
3, Quali sono i possibili parametri da passare a un campo di testo di input? Voglio passare il nome della classe pure, ma io non so come ...
posso definire i miei argomenti personalizzati per passare (cioè classe o segnaposto): class="@elements.args.get('_class)
e poi posso passare in questo modo: '_class -> "classname"
4, È possibile definire più di uno implicitFieldConstructors
in una parte modello? Perché per le caselle di controllo voglio un altro FieldConstructor rispetto alle caselle di input e textarea, ma come fare?
Esempio di questo: Nel campione computer database di un campo di bootstrap Twitter è definito, ma poi si è utilizzato come segue:
@inputText(loginForm("email"), '_label -> "Email")
Perché il nome qui inputText e non solo in ingresso? Perché c'è anche un input.scala.html?
Quindi, se voglio creare un fieldhandler per la casella di controllo, come usare questo? Il seguente formato mi sta dando errori:
@checkBoxHandler = @{ FieldConstructor(s2ftheme.constructors.checkbox.render) }
@checkbox(loginForm("remember"), '_label -> Messages("login.remeberme"))(handler = implicitFieldConstructor)
ricevo il seguente messaggio di errore:
not enough arguments for method apply: (implicit handler: views.html.helper.FieldConstructor, implicit lang: play.api.i18n.Lang)play.api.templates.Html in object checkbox. Unspecified value parameter lang.
penso che mi manca il concetto qui ... Grazie.
Ok, ha più senso, posso anche fornire un FieldConstructor implicito diverso per dire una casella di controllo, perché per la casella di controllo voglio un markup diverso? – adis
Come si genera la chiave di traduzione? Se voglio tradurre il testo "Questo campo è richiesto"? – adis
È possibile passare il costruttore di campi alla casella di controllo '@. –