ヘッド、メニュー、フッターを含むビューテンプレートがあります(このファイルをメインテンプレートと呼びます)。このテンプレートは、コンテンツを含む他のページから呼び出されます。メニューにログインするためのフォームを追加することにしました。私の最初のアイデアは、コントローラーを介してパラメーターごとにメインテンプレートにレンダリングされるビューファイルからフォームを渡すことでしたが、すべてのページで毎回ログインフォームを表示する必要がないため、これは私の解決策ではありません。
私には2つの解決策がありますが、どちらにも問題があります。
フォームと入力のヘルパーを使用してメインテンプレートにフォームを作成し、純粋なhtmlを使用してボタンを作成しました
@helper.form(routes.Application.loginPosted,'class -> "navbar-form pull-right"){ <input class="span2" type="text" placeholder="email" name="email"> <input class="span2" type="password" placeholder="passwd" name="passwd"> <button type="submit" class="btn btn-primary">Login</button> }
コントローラーでDynamicFormとして処理し、検証を容易にするためのモデルを表すフォームに変換する必要があります
DynamicForm requestData = form().bindFromRequest(); Form<User_Login> loginFormFilled = form(User_Login.class); loginFormFilled.fill(new User_Login(requestData.get("email"), requestData.get("passwd")));
しかし、loginFormFilled.get()。email(およびpasswdも)は常に空白であり、その理由がわかりません。
モデル表現としてメインテンプレートにフォームを作成したかったのですが、コンパイルされるコードを記述できません(logFormに問題があることはわかっていますが、まだ多くの組み合わせを試しましたが、有効なフォームを作成できません)
@val logForm = new Form[User_Login] @helper.form(routes.Application.loginPosted,'class -> "navbar-form pull-right"){ @helper.inputText( logForm("email") ) @helper.inputPassword( logForm("passwd") ) <button type="submit" class="btn btn-primary">Login</button> }