2013-08-22 3 views
3

Я пытаюсь изменить текст сообщения проверки показывает в своих формах, созданных с помощью рамок PlayPlay сообщения проверки Framework формы с полями Twitter Bootstrap

enter image description here

текст как «Обязательный», «Числовые ',' Date (yyyy ...) 'отображается автоматически в зависимости от типа свойства, связанного с полем формы.

@implicitFieldConstructor = @{ 
    FieldConstructor(twitterBootstrapInput.f) 
} 

<fieldset> 
    @inputText(productForm("id"), '_label -> "Product id") 
    @inputText(productForm("info.name"), '_label -> "Name", 'placeholder -> "Product Name") 
    @inputText(productForm("info.code"), '_label -> "Code") 
    @inputText(productForm("info.weight"), '_label -> "Weight") 
@inputDate(productForm("info.dateAdded"), '_label -> "Date Added") 
</fieldset> 

Это все довольно хорошо, но мне интересно, как я могу его изменить. Можно ли использовать какой-либо атрибут на элементе @inputText, например. smth вроде '_helpinline -> "Please enter the name" (я действительно искал что-то вроде этого, но ничего не мог найти), может быть, есть другие способы использования людей?

Эти сообщения показаны в Twitter bootstrap help-inline стилизованный элемент.

ответ

1

Хотя сообщение об ошибке можно легко изменить, передав message param для аннотации ограничения (например, @Required(message = "abc")), это неверно для этих сведений. Фактически, это то, где они определены: в аннотации, с которой аннотация аннотации constratin аннотируется сама (так мета). Просто see source, если я объясню слишком сложно. Обратите внимание на строку @play.data.Form.Display(name="constraint.required").

Итак, что мы можем с этим сделать?

Вариант 1: если вы хотите изменить это для ВСЕ @ Необходимые поля. Как вы видите, эта аннотация определяет не само сообщение, а его ключ локализации . Таким образом, вы можете изменить это в локализации, просто добавив следующую строку в conf/messages.en:

constraint.required=This is so very required! 

, а затем все остальные языковые файлы.

Вариант 2: если вы хотите, чтобы каждый вход имел другое сообщение, заданное как параметр. Тогда вам не нужно вообще входить в этот механизм проверки, вы можете просто изменить свой конструктор поля . Here is the source встроенного трэтер-бутстрепа. Сделайте свой собственный, скопировав его (если вы еще этого не сделали) и поместите все, что хотите, в <span class="help-inline">. Например, для обработки '_helpinline -> "Please enter the name", то 14'th линия может быть следующим:

<span class="help-inline"> 
    @elements.args.get('_helpinline).getOrElse(elements.errors(elements.lang).mkString(", ")) 
</span> 

Вы видите, я положил начальное значение в getOrElse, так что если вы не обеспечиваете '_helpinline информацию по умолчанию используются ,

Вариант 3: если вы хотите, чтобы каждый вход имел другое сообщение, настраиваемое посредством аннотации, как @Required(message = "abc"). Тогда вы можете захотеть создать свою собственную аннотацию @Require, скопировав ее с the source и внеся некоторые изменения. Это самый сложный вариант, я думаю, что вариант 2 лучше, но тем не менее, полезно знать, как создать собственную аннотацию валидатора, так как это не так сложно, как кажется.

Надеюсь, что некоторые из этих вариантов помогут.Я ставлю на 2-ое, на самом деле :)

+0

Знаете ли вы, что можете найти список ключей сообщения о локализации по умолчанию (например, constraint.required)? – Kris

+1

Они также находятся в источнике. В этом случае он находится в https://github.com/playframework/playframework/blob/master/framework/src/play/src/main/resources/messages – NIA

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