2017-09-25 111 views
0

我有一個帖子創建方法:Vibe.d基本形式驗證

void gönderiyiOluştur(HTTPServerRequest istek, HTTPServerResponse yanıt) 
{ 
    render!("gönderiler/oluştur.dt")(yanıt); 
} 

和後存儲方法是這樣的:

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. 定義應在情況下,驗證失敗,被稱爲類中的方法。此方法應顯示錯誤消息:

    void getError(string _error = null, HTTPServerResponse res) { ... } 
    
  3. 註釋kaydet方法與@errorDisplay屬性的方法與誤差函數進行連接:

    class Shipment { 
        @method(HTTPMethod.POST) 
        @errorDisplay!getError 
        void kaydet() { ... } 
        void getError(string _error = null, HTTPServerResponse res) { ... } 
    } 
    
  4. 現在做kaydet方法內的驗證和在發生錯誤時拋出異常。然後自動調用getError方法。您也可以利用參數綁定和轉換。當D參數名稱與HTML輸入值的名稱相同時,則此值綁定到D參數。自動類型轉換髮生(例如到int),並可能導致異常,然後在getError方法中處理異常。

  5. 當你需要使用Web框架註冊類最後一步:

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

你應該the documentation of errorDisplay,並在web framework example from vibe.d看看了。