Todavía tengo problemas con la validación de formulario y los ayudantes de formulario en Play 2.0. Tengo esta pantalla de inicio de sesión que uso junto con Twitter Bootstrap. Así que mi formulario de acceso es el siguiente:Formulario de validación y ayudante de formulario
@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>
}
Y mi Twitter bootstrap campo se parece siguientes:
@(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>
Ésta es la salida:
Lo que no entiendo :
1, W HY es el texto de ayuda visibles todo el tiempo te (en el lado derecho del campo de entrada)
El texto de ayuda proviene de @elements.infos.mkString(", ")
. Así que borrar esta línea eliminará el texto de ayuda. O puede pasar una cadena vacía para suprimir el texto de ayuda siendo visible: '_help -> ""
2, ¿Cómo se muestra solo el texto de ayuda si se produce un error?
texto de ayuda puede ser añadido al utilizar este código: @elements.errors(elements.lang).mkString(", ")
3, ¿Cuáles son los posibles parámetros para pasar a un campo de texto? Quiero pasar el nombre de la clase, así, pero no sé cómo ...
puedo definir mis argumentos personalizados para pasar (es decir, la clase o marcadores de posición): class="@elements.args.get('_class)
y entonces puede pasar de esta manera: '_class -> "classname"
4, ¿Puedo definir más de un implicitFieldConstructors
en una sola parte de la plantilla? Porque para las casillas de verificación quiero otro fieldConstructor en comparación con las casillas de entrada y el área de texto, pero ¿cómo hacer esto?
Ejemplo de esto: En la muestra-base de datos informática se define un campo de arranque Twitter, pero luego se utiliza de la siguiente manera:
@inputText(loginForm("email"), '_label -> "Email")
¿Por qué es el nombre aquí inputText y no sólo de entrada? Porque también hay un input.scala.html?
Entonces, si quiero hacer un manipulador de campo para la casilla de verificación, ¿cómo usar esto? El siguiente formato es que me da errores:
@checkBoxHandler = @{ FieldConstructor(s2ftheme.constructors.checkbox.render) }
@checkbox(loginForm("remember"), '_label -> Messages("login.remeberme"))(handler = implicitFieldConstructor)
me sale el mensaje de error:
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.
Creo que me falta el concepto aquí ... Gracias .
Ok, tiene más sentido, ¿puedo también proporcionar un FieldConstructor implícito diferente para, por ejemplo, una casilla de verificación, porque para la casilla de verificación quiero un marcado diferente? – adis
¿Cómo se construye la clave de traducción? Si quiero traducir el texto "Este campo es obligatorio" – adis
Puede pasar el constructor de campo al '@ checkbox'. –