Forum: D Programlama Dili RSS
vibe.d ile form doğrulama
erdem (Moderatör) #1
Üye Tem 2009 tarihinden beri · 953 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: vibe.d ile form doğrulama
Ş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?
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4511 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
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
erdem (Moderatör) #3
Üye Tem 2009 tarihinden beri · 953 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
[Resim: 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
acehreli (Moderatör) #4
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4511 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
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/DictionaryL…

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

Ali
erdem (Moderatör) #5
Üye Tem 2009 tarihinden beri · 953 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Kendi sitesinde de sormuştum. Yeni yanıtlar gelmiş ona bakıyorum.

https://forum.rejectedsoftware.com/groups/rejectedsoftware…
kerdemdemir #6
Üye Eyl 2013 tarihinden beri · 121 mesaj · Konum: Danimarka
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Erdem hocam html cok guzel gozuyor. Acaba template .dt dosyasini paylasma durumlari olabilirmi?

Haddim olmadan soruyorum saygisizlik olduysa kusuruma bakma lutfen.

Saygilar
Erdem
erdem (Moderatör) #7
Üye Tem 2009 tarihinden beri · 953 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Ş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/epi…
https://laracasts.com/series/laravel-from-scratch-2017/epi…

Şablonun kendi adresi de burası:

https://getbootstrap.com/docs/4.0/examples/blog/
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-10-18, 20:45:09 (UTC -07:00)