0

Это мой файл вид, содержащий форму, которая должна заполняться пользователем:Play Framework Форма Обработка ошибок

@helper.form(call) { 
    @helper.input(resumeForm("surname"), '_label -> "Surname") { (id, name, value, args) => 
     <input name="@name" type="text" value="@value" placeholder="Enter your surname"> 
    } 
} 

Это мой настраиваемое поле конструктор:

@(elements: helper.FieldElements) 

@if(!elements.args.isDefinedAt('showLabel) || elements.args('showLabel) == true) { 
    <div class="input-with-label text-left"> 
     <span>@elements.label</span> 
     @elements.input 
    </div> 
} else { 
    @elements.input 
} 

Теперь у меня есть дилемма. Когда введенное значение не очистит проверку, мне нужно добавить класс field-error на вход, и мне нужно добавить data-toggle, data-placement и title. Однако я не знаю, как проверить, есть ли ошибки для конкретной области. Каков наилучший способ реализации этого? Я уже посмотрел на использование inputText или что-то подобное, но это в основном то же самое, что и база input, таким образом, также не имеет доступа к каким-либо ошибкам. Я также не могу изменить HTML-код elements.input внутри конструктора поля.

ответ

1

Посмотрите на play documentation: Написание собственного конструктора поля. Вы можете проверить ошибки с помощью @if(elements.hasErrors) в шаблоне своего настраиваемого конструктора полей.

<div class="input-with-label text-left @if(elements.hasErrors){field-error}"> 
    ... 

Edit:

Вы можете передать состояние ошибки вашего поля с помощью параметра на ваш вход args. Из игры Документах

Примечание: Все дополнительные параметры будут добавлены к сгенерированной HTML, для тех, чье имя начинается с символа _ исключением. Аргументы, начинающиеся с символа подчеркивания, зарезервированы для аргумента конструктора поля (который мы увидим позже).

Необходимо приложить к соответствующему типу.

@input(resumeForm("surname"), '_label -> "Surname", 'hasErrors -> resumeForm("surname").hasErrors) { (id, name, value, args) => 
    <input name="@name" type="text" value="@value" placeholder="Enter your surname" 
     class="@if(args.get('hasErrors).map(_ match { case x:Boolean => x}).get){field-error}"> 
} 
+0

Это то, что я сказал. Это не решит мою проблему, потому что я не могу изменить вход, используя это. – Martijn

+1

См. Мое редактирование. –

+0

Никогда не понимал, что они имели в виду с этими предложениями ха-ха. Благодаря! – Martijn

Смежные вопросы