2013-05-31 48 views
5

你好,我是一個scala玩框架的初學者。我無法創建帶有兩個或更多輸入的表單。我GOOGLE了它,並沒有在scala編程語言中找到。請向我建議如何使用scala在表單中創建多個輸入。我做了這個斯卡拉玩框架中的表格

val form = Form (tuple 
    (
"firstname"-> text, 
"lastname" -> text 
) 
) and to get the values val(fname,lname) = form.bindFromRequest.get 

我按照正確的方式。請向我建議學習scala play框架的任何想法或資源。在此先感謝

+0

你有沒有機會導入scala.text?刪除它並添加@Matt機器人的相應導入應該可以解決您的問題。 – binshi

回答

26

這是一個完整的(但簡單)的表單示例爲Play 2.1.1。包括視圖,控制器和路由文件。我懷疑你是missing imports和/或implicit request。這兩個都是可以理解的!

控制器(Application.scala):

package controllers 

import play.api._ 
import play.api.mvc._ 
import play.api.data._ 
import play.api.data.Forms._ 

object Application extends Controller { 
    val form = Form(
    tuple(
     "firstname" -> text, 
     "lastname" -> text 
    ) 
) 

    def index = Action { 
    Ok(views.html.index()) 
    } 

    def submit = Action { implicit request => 
    val (fname, lname) = form.bindFromRequest.get 
    Ok("Hi %s %s".format(fname, lname)) 
    } 
} 

的視圖(index.scala.html):

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Form example</title> 
    </head> 
    <body> 
    <form method="post" autocomplete="on"> 
     First name:<input type="text" name="firstname"><br> 
     Last name: <input type="text" name="lastname"><br> 
     <input type="submit"> 
    </form> 
    </body> 
</html> 

而且路線:

GET /       controllers.Application.index 
POST /       controllers.Application.submit 

NB: HTML視圖中的名稱屬性必須與控制器表單中的字符串文字相匹配。

希望有幫助。

+0

有沒有辦法驗證這種類型的表單(它是一個元組而不是一個案例類),並在驗證失敗時將結構傳遞迴模板? – nfvindaloo

+0

是的!它在「定義約束」下的[Play 2.x文檔](http://www.playframework.com/documentation/2.0/ScalaForms)中有描述。例如:''firstname「 - > nonEmptyText'。 –

+0

我怎樣才能將它傳遞給模板?每當我嘗試模板時抱怨Form必須有一個泛型類型,但是在爲一個元組顯示的情況下,id不會!? – nfvindaloo

0

玩文檔是瞭解表格的最佳方式 https://www.playframework.com/documentation/2.1.1/ScalaForms如果您想要更多,請查看play-example-form項目。

http://typesafe.com/activator/template/play-example-form此表單上的激活器示例項目解釋了有關表單的所有信息。

1)它解釋了播放控制器中的表單和數據綁定,驗證。

2)它在表格中解釋了關於Optional parameters

3)它解釋了關於與嵌套對象複雜的形式例如

 case class Student(name: String, age: Int, gender: Optional[Char] = None, 
               address: Address, other: OtherStuff) 

上述情況類取決於地址,OtherStuff和 通知,性別是可選的。該示例項目解釋瞭如何處理這種複雜的對象依賴性。

請從這裏下載催化劑http://typesafe.com/get-started。然後使用命令activator ui在瀏覽器UI模式下啓動激活器,然後在搜索中鍵入play-example-form以下載它。下載後,轉到項目根文件夾,如果使用eclipse,則輸入activator eclipse,如果是Intellij Idea,則輸入activator gen-idea

+0

'不是一個有效的命令:gen-idea' – 030