2012-05-02 8 views
3

登録フォームとログインフォームには、サーバー側の検証ロジックが必要です。私は、クライアント上の各入力ブロックのメッセージを表示する最善の方法を考え出したいと思います。Expressを使用してNode.jsアプリケーションでフォーム検証エラーを表示する最良の方法は?

アプリケーションフロー:

  1. クライアント側のフォーム私は傾いていステップ1

でフォームをレンダリングされたビューにノード

  • リダイレクトに
  • 検証を提出フォーム入力メッセージを表示するにはreq.flash()が必要ですが、これにはもっとOOPのアプローチがありますか?

  • +0

    +1 for 'req.flash()' – pkyeck

    +0

    この問題は、AJAX検証のためのクライアントサイドスクリプトを持つノードモジュールを作成するよう促しました。この考え方は、フォームフィールドを、mongooseスキーマと同様に、つまり検証ルールを使ってサーバー上にセットアップすることです。クライアント側のコードが動的に生成され、jQueryの変更リスナーとフォーム提出を処理して、送信前に検証します。フォームは 'req.body'(本体パーサーを使用している場合)を介して通常の方法でアクセスされます –

    答えて

    1

    私は、フォームデータを検証する検証ミドルウェアを持っています。検証が失敗した場合にどのフォームを再レンダリングするかをミドルウェアに伝えることができ、フィールドの名前とフィールドのエラー配列を持つエラーオブジェクトが生成されます。

    私のフォームはこのように見える終わる:

    include ../mixins/form-helpers 
    
    mixin errors() 
    
    form(action=url('messages_create'), method='post') 
    
        mixin csrf() 
    
        fieldset 
    
        legend contact 
    
        mixin field('text', 'subject', 'Subject') 
        mixin field('textarea', 'message', 'Message') 
    
        .form-actions 
        mixin submit('Send') 
    

    私は件名とメッセージを表示せずにこのフォームを投稿する場合、私は、次のオブジェクトを設定します。私は私の失敗フィールドに赤い枠を追加できるように

    var errors = { subject: ['is required'], message: ['is required'] }; 
    

    マイエラーのミックスインは、すべてのエラーとエラークラスを追加します、私のフィールドのミックスインをレンダリングします。

    +0

    すべてのレポを共有できるので、最初から最後まですべてを見ることができます。 – k00k

    +0

    私が検証するために使用するモジュールはgithub上にあります:https://github.com/Enome/square/tree/master/validationこれは主に個人用ですので、ドキュメントはちょっとおかしなものです。私のmixinファイルは次のようなものです:https://gist.github.com/2727378 – Pickels

    0

    チェックアウトValidity入力フィールドを作成して適切にレンダリングするための検証とエラーを付加するために特別に設計されています。

    関連する問題