2016-12-15 2 views
0

私のサイトの2ページ:私たちについてのお問い合わせと連絡先です。私のホームコントローラに記述されている両方のアクション。 フォームを送信した後、フォームエラーをチェックしてリクエストを送信するsendRequestメソッドを呼び出します。この方法ではPlay Frameworkコントローラの汎用アクション

def sendRequest = Action {implicit request => 
    requestForm.bindFromRequest.fold(
    formWithErrors => { 
     BadRequest(views.html.Home.contacts(formWithErrors)) 
    }, 
    response => { 
    Redirect(routes.HomeController.contacts().flashing("success" -> "OK")) 
    } 
) 

}

私はビューと移動するルートを定義します。このメソッドは次のようになります。そして私のAbout usのページでも私は同じ仕事をしなければなりませんが、私たちは私たちの見方と経路についてお話します。

ジェネリックメソッドを作成し、具体的なビューとルートをパラメータとして呼び出すにはどうすればよいですか?

答えて

0
// if requestForm is a Form[A] 

protected def genericMethod(
    view: Form[A] => play.twirl.api.Html, route: play.api.mvc.Call) = 
    Action {implicit request => 
    requestForm.bindFromRequest.fold(
    formWithErrors => { 
     BadRequest(view(formWithErrors)) 
    }, 
    response => { 
    Redirect(route.flashing("success" -> "OK")) 
    } 
) 
} 

def sendRequest = genericMethod(
    views.html.Home.contacts, 
    routes.HomeController.contacts()) 
+0

この場合、依然として依頼ごとに2つの方法が必要です。私は両方の意見から呼び出すことができる汎用的な方法を意味しました。 – Tannheuser

+0

私はあなたが何を意味するかについて少し不明です。両方のコントローラに 'genericMethod'を含めたくないと言っているなら、コンパニオンオブジェクトや特性にジェネリックメソッドを追加し、それを両方のコントローラに含めることができます。 – Jamie

+0

私のコントローラにはsendRequestといういくつかのメソッドがあり、ビューとルートが設定されています。このジェネリックメソッドのパラメータを自分のビューから直接送信できますか? – Tannheuser

関連する問題