2017-09-25 21 views
0

私はポストがメソッドを作成する必要がありVibe.d基本的なフォーム検証

void gönderiyiKaydet(HTTPServerRequest istek, HTTPServerResponse yanıt) 
{ 
    auto başlık = istek.form["baslik"]; 
    auto içerik = istek.form["icerik"]; 

    bool yayınla = false; 

    if (başlık.length > 0) 
    { 

     Gönderi gönderi = Gönderi(başlık, içerik); 

     gönderi.kaydet(); 
     yanıt.redirect("/"); 
    } 
    else 
    { 
     yanıt.redirect("/gönderiler/oluştur"); 
    } 
} 

私は基本的なフォームの検証をしたいのですが。たとえば、入力フィールドが空の場合、前のページにリダイレクトされます。

は私が..私はなど空であってはならないbaslikフィールドのような作成方法にいくつかのエラーメッセージを渡す必要があり

を仮定しかし、私はフレームワークにはかなり新しいですので、私は分からないはずです。フレームワークがフォーム検証のために提供する機能はありますか?

答えて

1

vibe.dのWebフレームワークを使用すると、基本的なフォーム検証が容易になります。基本的な手順は以下のとおりです。

  1. がクラスGönderiyiを作成し、このクラス内でごkaydet方法を置く:
    class Shipment { 
        @method(HTTPMethod.POST) 
        void kaydet() { ... } 
    } 
    
  2. は、検証が失敗した場合に呼び出されなければなりませんクラス内のメソッドを定義します。誤差関数とメソッドを接続するために@errorDisplay属性でkaydet方法を注釈

    void getError(string _error = null, HTTPServerResponse res) { ... } 
    
  3. :このメソッドは、エラーメッセージが表示されるはずです

    class Shipment { 
        @method(HTTPMethod.POST) 
        @errorDisplay!getError 
        void kaydet() { ... } 
        void getError(string _error = null, HTTPServerResponse res) { ... } 
    } 
    
  4. は今kaydetメソッドの内部で検証を行い、エラーが発生した場合に例外をスローします。 getErrorメソッドが自動的に呼び出されます。パラメータのバインディングと変換も利用できます。 Dパラメータ名がHTML入力値の名前と同じ場合、この値はDパラメータにバインドされます。自動タイプ変換が行われ(例えば、int)、例外につながる可能性があります。この例外は、getErrorメソッドでも処理されます。あなたがWebフレームワークを使用してクラスを登録する必要があり、最後のステップとして

  5. auto router = new URLRouter; 
    router.registerWebInterface(new Gönderiyi); 
    

あなたも、the documentation of errorDisplay時とweb framework example from vibe.dを見ている必要があります。