Merhaba, yazıma kaldığım yerden devam edeceğim. Bu gün yeni kayıt, güncelle ve silme işlemlerini yapacağız. Create sayfamızı önceki yazılarımdan birinde zaten anlatmıştım ancak tasarım olayına girmemiştik. Bu yüzden orada da bir tasarım etkileşimi yapma taraftarıyım. Hemen işe koyulalım ve create olayını tasarlayalım.
Öncelikle liste sayfasının tasarımını biraz toparlayalım buton şu bu nerede belli olsun. Telefon defteri için hazırladığımız index.php dosyasını düzenleyelim ve yeni kayıt için bir link koyalım.
Evet sayfamız bu şekilde yeni kayıt linkine de sahip olmuş oldu. Şimdi create.php viewimizi düzenleyelim. Onu önceden yapmıştık sadece tasarım giydirme yapılacak.
Formu bu şekilde düzenledikten sonra header ve footer için action ı da controller den düzenlememiz gerekecek.
Controller de sadece create actionunu düzenledik header ve footer için. Bu arada base_url() fonksiyonunun çalışması için url helperini de yüklememiz gerekti. Post aşaması ile ilgili yapılacak birşey yok orası zaten aynı kalıyor. Artık create işlemi hazır. Şimdi gelelim düzenleme işlemine. İşleme öncelikle model katmanından başlayalım. Id üzerinden çalıştığımız için Id ile veri getiren bir fonksiyon ekleyeceğiz.
Modelimize id ile veri getiren bir fonksiyon eklemiş olduk. Basitçe get_where kullanarak id ile veri getirmeyi sağladık. Şimdi listeleme ekranında bir butonla kayıt düzenleme isteğinde bulunalım. Bunun için index.php view inde bir buton eklememiz gerekecek.
Bakıyoruz oldu mu diye hemen
Sanırım bu hali olmuş gibi görünüyor. Şimdi düzenleme sayfasına geçebiliriz. Düzenleme sayfası için hemen bir action metodu oluşturalım adı da edit olsun.
Burası açıkcası create metoduna benziyor. Tek fark kayit diye erişeceğimiz bir referansa getDataById ile bizim düzenleyeceğimiz kaydı geçirmiş olduk. Burada ki $id değeri malumunuz index te kurguladığımız linkten gelmekte. Şimdi view tarafına bakalım. Create.php viewini copyalayıp edit.php olarak değiştirip aşağıda ki gibi düzenliyoruz.
Bu sayfada eklenmiş tek alan form_hidden alanı id değerini göndermek adına var. Diğer kısımlar ise gelen datanın gösterilmesi için inputlara eklenmiş durumda. Bir de formun actionu create_post dan edit_post a çevirdik. E bu dosyayı editledikten sonra kaydedecek yere gitmeli. Burası da bu kadar diyoruz. Bir bakalım çalışınca neye benziyor.
Cevdet kaydını düzenle dediğimizde bu çıkmış oldu. Demekki doğru yoldayız. Gelelim edit_post olayına ki kayıt işlemini tamamlayalım. Unutmadan model içerisinde hala update işlemini yapan bir fonksiyon yok. Onu yazarak başlayabiliriz.
Bu da bizim update de kullanacağımız kodumuz. Şimdi controller de post ettiğimiz edit_post metodunu yazalım.
Bu action aslında insertle aynı gibi. Tek fark güncellenecek kayıdı referans etmek için $where dizisine id yi ekletip onun güncelleneceğini söylemek. Bir de unutmuyoruz modelin insert değil update fonksiyonunu kullandık. Aksi halde insert ederek yeni bir kayıtmış gibi davranır.
Evet cevdetin numasını 09009101010 olarak değiştirmiş bulunduk. Demek ki çalışıyor. Ne kaldı tabi ki silme. Onun için de modelimize bir delete methodu oluşturalım.
Delete metodu kısa ve öz bir metod, tablo adı ve neyin silineceğini sorgulayacağımız bir $where dizisi. Tabi biz id ile çalıştığımız için id göndermekteyiz. Senaryo karışıklaşabilir bu size kalmış. Pekala şimdi controllere delete action yazalım.
Burada da silme işlemini yapacak yöntemi yazdık. Bu arada resim olarak paylaşıyorum ama daha önceki konularda verdiğim gibi bir github hesabı ve online test edebileceğiniz bir cloud9 hesabı var oradan her an ulaşabilirsiniz. Şimdi geldik listeleme yaptığımız sayfaya bir sil butonu eklemeye.
Yukarı da ki kodu aşağıda ki de görüntüsü. Kayıt silme işlemi de tamamlanmış oldu. Bu arada silme işlemine onclick eventi ekledim böylece silmeden önce size silinsin mi diye soracaktır. İsterseniz bootstrap modallarla da bunu yapabilirsiniz tabi gerekli bileşenleri internetten bulmanız gerek. Bu konumuz dışı olduğu için şu anda değinmeyeceğim belki ilerde. Bu dersimiz de bu kadar. Bu arada yeni ders yayınlamayı düşünmüyordum, daha çok can alıcı bir kaç nokta farkettikçe yazarım dedim. Lakin bir kaç arkadaş mesaj atmış devamı yok mu diye. Madem bir faydası var o zaman devam edeyim dedim. Bu arada o arkadaşlara da teşekkür ederim.
Proje Cloud9 adresi: https://ide.c9.io/halityurttas/codeigniter-v3-ders
Proje GitHub adresi: https://github.com/halityurttas/codeigniter4sampleV3
Cloud9 dan kodları test edip kendinize bir kopya oluşturabilir, isterseniz github dan indirip local en son haliyle kullanabilirsiniz. Esenlikle…
Araştırdığım bir meseleydi teşekkür ederim