2017-06-30 54 views
1

我在學習Play Framework 2.6,我想問你如何正確使用Form並在我的模板中訪問這些數據。我從文檔中不是很聰明。Play Framework 2.5/2.6和Form in scala.html模板

在控制器

,我送這個給模板:

Form<LoginForm> loginForm = formFactory.form(LoginForm.class).bindFromRequest(); 

if (loginForm.hasErrors()) { 
    return ok(userLoginForm.render(loginForm)); 
} 

在HTML模板階,我做的表單服務器的文章後,如果我打印@form,我得到

@(form: Form[LoginForm]) 

content of @form=  
Form(of=class controllers.forms.LoginForm, data={Submit=Login, password=12, email=mail}, 
value=Optional[[email protected]], 
errors=[ValidationError(email,[Please use email in proper format.],[]), ValidationError(password,[Password must be longer than 3 characters],[]), ValidationError(,[Please fix all errors.],[])]) 

請我怎麼可以從模板(使用@form ... XYZ ....)訪問這些數據:

  1. 如何顯示電子郵件值,在這種情況下,它會顯示「郵件」
  2. 如何顯示密碼值,在這種情況下,它將顯示「12」
  3. 如何顯示一個全局錯誤消息(或第一個,如果有更多的),其「請修復所有錯誤。「在我們的例子
  4. 如何顯示與電子郵件
  5. 如何顯示的密碼
+0

您是否閱讀過表單上的文檔?它的答案和每個問題的例子https://www.playframework.com/documentation/2.6.x/ScalaForms#toolbar – EdgeCaseBerg

+0

是的,對於Java部分......但我不想使用由他們生成的

,我自己寫它們,所以我不知道如何訪問這些數據。我會在週末嘗試一下。 –

回答

0

我能想出一些我的問題有關的錯誤消息相關聯的錯誤消息。

要獲取電子郵件值:

@form.data.get("email") 

以獲取密碼值:

@form.data.get("password") 

要獲得一個全球性的錯誤消息:

@if(!form("").errors.isEmpty()) { 
    @form("").errors.get(0).message() 
} 

(但我更喜歡將全局錯誤放入flash())

要列出所有「電子郵件」錯誤消息:

@for(error <- form("email").errors) { 
    @error.message 
} 

我知道有可能是更好的解決方案,而這正是我現在有。

+0

在Play framework 2.6中,您可以使用@ form.rawData.get(「email」) –