"POST" yazılan bir yol var. Sayfaya veri gönderiyorum. Bu posta verilerine nasıl erişirim? Örneğin, PHP'de $ _POSTScala play'den post verilere nasıl erişebilirim?
'u kullanırsınız. Kayıt verilerini scala ve oynatma çerçevesinde nasıl erişirim? İşte
"POST" yazılan bir yol var. Sayfaya veri gönderiyorum. Bu posta verilerine nasıl erişirim? Örneğin, PHP'de $ _POSTScala play'den post verilere nasıl erişebilirim?
'u kullanırsınız. Kayıt verilerini scala ve oynatma çerçevesinde nasıl erişirim? İşte
bunu Play nasıl yapıldığını iyi örneği var:
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
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
}
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)
}
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("");
}
'Derleme hatası [value get, play.api.mvc.AnyContent]' nin bir üyesi değil. – Meekohi
'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