Я все еще боюсь с помощью проверки формы и формы помощников в Play 2.0. У меня есть этот экран входа в систему, который я использую вместе с Twitter Bootstrap. Так что моя форма Войти выглядит следующим образом:Проверка формы и помощник формы
@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>
}
И мой твиттер самозагрузки поле выглядит следующим образом:
@(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>
Это выход:
То, что я не понимаю :
1, W гип текст справки виден все то время (на правой стороне поля ввода)
Текст справки происходит от @elements.infos.mkString(", ")
. Таким образом, удаление этой строки приведет к удалению текста справки. Или вы можете передать пустую строку, чтобы подавить видимый вид: '_help -> ""
2, Как показать только текст справки при возникновении ошибки?
текст справки может быть добавлен при использовании этого кода: @elements.errors(elements.lang).mkString(", ")
3, Каковы возможные параметры для передачи в текстовом поле ввода? Я хочу, чтобы передать имя класса, как хорошо, но я не знаю, как ...
я могу определить свои собственные аргументы для передачи (т.е. класса или заполнителей): class="@elements.args.get('_class)
, а затем я могу передать это следующим образом: '_class -> "classname"
4, Могу ли я определить более одного implicitFieldConstructors
в одном шаблоне? Потому что для флажков я хочу другой fieldConstructor по сравнению с вложениями и textarea, но как это сделать?
Пример для этого: В примере компьютерной базы данных определяется полем начальной загрузки Twitter, но затем она используется следующим образом:
@inputText(loginForm("email"), '_label -> "Email")
Почему имя здесь inputText и не только вход? Потому что есть также input.scala.html?
Итак, если я хочу сделать полевой манипулятор для флажка, как его использовать? Следующий формат дает мне ошибки:
@checkBoxHandler = @{ FieldConstructor(s2ftheme.constructors.checkbox.render) }
@checkbox(loginForm("remember"), '_label -> Messages("login.remeberme"))(handler = implicitFieldConstructor)
Я получаю сообщение об ошибке:
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.
Я думаю, мне не хватает концепции здесь ... Спасибо.
Хорошо, имеет смысл, могу ли я также предоставить другой неявный FieldConstructor, скажем, флажок, потому что для флажка я хочу другую разметку? – adis
Как создается ключ перевода? Если я хочу перевести текст «Это поле обязательно»? – adis
Вы можете передать конструктор поля в поле '@ checkbox'. –