我有一个post create方法:
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");
}
}
我想进行基本的表单验证。例如,如果输入字段为空,则会重定向到上一页。
我想我应该向create方法传递一些错误信息,比如 baslik字段不应为空等。
但是因为我对框架很陌生,所以我不应该弄明白。框架是否有任何设施可用于表单验证。
答案 0 :(得分:1)
当您使用来自vibe.d的Web框架时,基本表单验证很容易。基本步骤是:
创建一个类Gönderiyi
并将您的kaydet
方法放在此类中:
class Shipment {
@method(HTTPMethod.POST)
void kaydet() { ... }
}
在类中定义一个方法,在验证失败的情况下应调用该方法。此方法应显示错误消息:
void getError(string _error = null, HTTPServerResponse res) { ... }
使用kaydet
属性注释@errorDisplay
方法,将方法与错误函数连接起来:
class Shipment {
@method(HTTPMethod.POST)
@errorDisplay!getError
void kaydet() { ... }
void getError(string _error = null, HTTPServerResponse res) { ... }
}
现在在kaydet
方法中进行验证,并在出现错误时抛出异常。然后自动调用getError
方法。您也可以利用参数绑定和转换。当D参数名称与HTML输入值的名称相同时,此值将绑定到D参数。自动类型转换发生(例如转移到int
)并导致异常,然后在getError
方法中处理。
作为最后一步,您需要使用Web框架注册您的课程:
auto router = new URLRouter;
router.registerWebInterface(new Gönderiyi);
您应该查看the documentation of errorDisplay和web framework example from vibe.d。