Проверка формы и помощник формы

Я все еще борюсь с проверкой формы и помощниками формы в 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>
    }

И мое поле начальной загрузки Twitter выглядит следующим образом:

@(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>    

Это вывод:

Login screen

Что я не понимаю:

1. Почему текст справки виден все время (справа от поля ввода)

Текст справки взят из@elements.infos.mkString(", "). Таким образом, удаление этой строки удалит текст справки. Или вы можете передать пустую строку, чтобы скрыть текст справки:'_help -> ""

2, Как показать только текст справки в случае возникновения ошибки?

При использовании этого кода можно добавить текст справки.:@elements.errors(elements.lang).mkString(", ")

3. Какие параметры можно передать в поле ввода текста? Я также хочу передать имя класса, но не знаю как...

Я могу определить свои пользовательские аргументы для передачи (т.е. класс или заполнители ):class="@elements.args.get('_class), а затем я могу передать его следующим образом:'_class -> "classname"

4. Могу ли я определить более одного implicitFieldConstructorsв одной части шаблона? Потому что для флажков мне нужен другой fieldConstructor по сравнению с полями ввода и текстовым полем, но как это сделать?

Пример для этого:В образце компьютерной-базы данных определено поле начальной загрузки Twitter, но затем оно используется следующим образом:

@inputText(loginForm("email"), '_label -> "Email")

Почему имя здесь inputText, а не просто input? Потому что есть еще и 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.

Я думаю, что здесь отсутствует концепция... Спасибо.

18
задан adis 18 April 2012 в 16:02
поделиться

0 ответов

Другие вопросы по тегам:

Похожие вопросы: