私はこれらのケースクラスを持っています
case class Blog(id:Long, author:User, other stuff...)
case class Comment(id:Long, blog:Blog, comment:String)
データを送信するクライアント側のフォーム
blog_id:"5"
comment:"wasssup"
ユーザーがブログにコメントを追加できるようにする簡単なコードを書いています。
ユーザーはログインしているので、user_id
クライアント側からは必要ありません。彼が誰であるかはわかっています...
blog_id
データベースからロードされたオブジェクトにバインドしたいと思いBlog
ます。存在しない場合はエラーを表示します。
Play フレームワーク ドキュメントの例は役に立ちません。
単一のオブジェクトとそのすべてのフィールドを表すフォームのマッピングのみを示します。
ここでは a のタプルを表し、 のタプルのみを提供してい(b:Blog, comment:String)
ます。 Blog
id
変換+検証+エラーメッセージを提供するマッピングが必要なので、次のように書くことができます:
val form = Form(
tuple(
"blog_id" -> blogMapping,
"comment" -> nonEmptyText
)
)
form.bindFromRequest().fold(...
formWithErrors => {...
}, {
case (blog, comment) => {do some db stuff to create the comment}
...
「blogMapping」は他のマッピングと同様に機能し、投稿されたデータをオブジェクト (この場合は db からロードされたブログ) にバインドします。失敗した場合は、formWithErrors =>
句で使用できるエラーを提供します。
これを達成する方法がわかりません。ドキュメントはここに少し欠けています...
どんな助けも大歓迎です!