2012-06-26 17 views

cevap

5

bunu Play nasıl yapıldığını iyi örneği var:

https://github.com/playframework/Play20/blob/master/samples/scala/zentasks/app/controllers/Application.scala

val loginForm = Form(
    tuple(
    "email" -> text, 
    "password" -> text 
) verifying ("Invalid email or password", result => result match { 
    case (email, password) => User.authenticate(email, password).isDefined 
    }) 
) 



/** 
* Handle login form submission. 
*/ 
def authenticate = Action { implicit request => 
    loginForm.bindFromRequest.fold(
    formWithErrors => BadRequest(html.login(formWithErrors)), 
    user => Redirect(routes.Projects.index).withSession("email" -> user._1) 
) 
} 

O @Marcus işaret ettiği gibi forms submission

2

ait belgelerinde açıklanan oluyor, bindFromRequest olduğunu tercih edilen yaklaşım. Basit bir defaya mahsus durumlar için, ancak, bir saha

<input name="foo" type="text" value="1"> 

Oynat 2.1 itibariyle böylece

val test = Action { implicit request => 
    val maybeFoo = request.body.get("foo") // returns an Option[String] 
    maybeFoo map {_.toInt} getOrElse 0 
} 
+11

'Derleme hatası [value get, play.api.mvc.AnyContent]' nin bir üyesi değil. – Meekohi

+1

'request.body.asFormUrlEncoded.get ("foo")' yı deneyin. Lift (0) '- ArrayBuffer'ı alıyorum ve 'lift (0)' içerdiği elemanın 'Option'unu döndürür – Techmag

8

gibi post'd formu aracılığıyla erişilebilir, POST parametreleri almak için iki yol vardır: cisim bildirilmesi

1) form-urlencoded request.body otomatik olarak ilk [string, Sek [dize]] dönüştürülür ve bu durumda bir eylem ayrıştırıcı parametre ile:

def test = Action(parse.tolerantFormUrlEncoded) { request => 
    val paramVal = request.body.get("param").map(_.head) 
} 
Harita almak için request.body.asFormUrlEncoded arayarak

2) [String, Seq [Dize]]:

def test = Action { request => 
    val paramVal = request.body.asFormUrlEncoded.get("param").map(_.head) 
} 
0
Burada

bunu Oynat 2'de nasıl yapıldığını iyi örneği var:

def test = Action(parse.tolerantFormUrlEncoded) { request => 
 
    val paramVal = request.body.get("param").map(_.head).getorElse(""); 
 
}

İlgili konular