Thread overview
vibe.d ile form doğrulama
Sep 25, 2017
erdem
Sep 25, 2017
erdem
Sep 25, 2017
erdem
Sep 26, 2017
kerdemdemir
Sep 27, 2017
erdem
September 25, 2017

Şu şekilde bir gönderi oluştur yordamımız var:

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

Bir tane de gönderiyi kaydeden bir yordamımız var.

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");
     }
}

Şimdi dikkat ederseniz burada form'un başlık ve içerik alanları kontrol ediliyor. Eğer form alanları boş ise önceki sayfaya yönlendiriyoruz. Ama buradaki hata mesajını nasıl geçebiliriz acaba?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 25, 2017

http://www.erdem.tk/resim/resim/formkontrol.png

Şu an için bir hata mesajı yok ama yukarıdaki gibi bizim oluşturup forma göndermemiz gerekiyor anladığım kadarıyla.

auto başlık = "baslik" in istek.form[];

Bu şekilde kullanınca şöyle bir hata verdi:

'source/app.d(73,43): Error: no [] operator overload for type DictionaryList!(string, true, 16LU, false)'

Şimdik gönderiyi kaydeden işlev bu şekilde:

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 && içerik.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");
   }
}

Eğer form alanlarından herhangi birisi boşsa kayıt yapmıyor.

Yukarıdaki formun benzerini oluşturan kod da şuna benziyor:

'gönderioluştur.dt'

col-sm-8.blog-main
 h1 Gönderi oluştur.
 |
 hr
 |
 form(method="POST", action="/gönderiler")
   .form-group
     label(for="baslik") Gönderi başlığı :
     |
     input#baslik.form-control(type="text", name="baslik")
   |
   .form-group
     label(for="icerik") İçerik
     |
     textarea#icerik.form-control(name="icerik")
   |
   .form-group
     button.btn.btn-primary(type="submit") Yayınla

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 25, 2017

Kendi sitesinde de sormuştum. Yeni yanıtlar gelmiş ona bakıyorum.

https://forum.rejectedsoftware.com/groups/rejectedsoftware.vibed/thread/45984/

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 25, 2017

Hata mesajı başlık.length deyince mi oluşuyor? Doğru anladıysam burada "baslik"ın varlığını in işleci ile denetlemek gerek:

   auto başlık = "baslik" in istek.form[];
   if başlık {
       // Artık başlık'ı kullanabilirim
       // ...
   }

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 25, 2017

D'nin eşleme tablosu sanarak öyle yazmıştım; değilmiş. :) Ama sonunda boş köşeli parantezleri yazmamalıymışım. O parantezleri silince şu işlevi çağırması gerek:

http://vibed.org/api/vibe.utils.dictionarylist/DictionaryList.opBinaryRight

Bunun dışında, vibe.d deneyimi bulunmayan bir kişi olarak bu konudan çekiliyorum. :)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 26, 2017

Erdem hocam html cok guzel gozuyor. Acaba template .dt dosyasini paylasma durumlari olabilirmi?

Haddim olmadan soruyorum saygisizlik olduysa kusuruma bakma lutfen.

Saygilar
Erdem

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 27, 2017

Şu adrese gönderdim:

https://github.com/erdemoncel/gunce

Aslında sanırım diet şablonlarında extends komutuna benzer bir komut varmış. Ben bilmediğim için oluştur.dt biraz uzun oldu sanırım.

Jade'ye çevirmek için şu adresi kullandım:

http://html2jade.vida.io/

Bu şablonların nasıl oluşturulduğu da her ne kadar blade için de olsa burada anlatılıyor.

https://laracasts.com/series/laravel-from-scratch-2017/episodes/10
https://laracasts.com/series/laravel-from-scratch-2017/episodes/11

Şablonun kendi adresi de burası:

https://getbootstrap.com/docs/4.0/examples/blog/

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]