Codeigniter Serisi 6 – Controller-View iletişimi

PHP Programlama  Mart 1, 2015

Controller ile View arasında ki iletişim önemli bir konudur. Çünkü View arkada oluşan veriyi ancak Controller aracılığıyla alabilir. Bizimki classını bu aşamada bu amaç için kullanacağız. Bizimki classımızı tekrar gözden geçirelim.

2015-03-01 21_34_19-codeigniter4samplebizimki

Burada da görüldüğü gibi Bizimki classında sadece load ile view responsea gönderilmiş durumda. Peki biz bazı değerleri viewe göndersek de o da ona göre ekrana verileri getirse olmaz mı?

Pekala olayın bu aşamasında işler biraz değişmekte. load->view yapısı temelde eğer bir view görüntülemek üzere yapılandırılmış ise yukarıda ki çağrı doğru, ancak viewe veri göndermek istiyorsak iş değişiyor. View için gönderilecek veri öncelikle bir diziye aktarılmalı ve bu dizi load->view fonksiyonuna ikinci parametre olarak geçirilmeli.

Bu durumu bir örnekle açıklayalım. Vieweimiz “Merhaba, XXX” şeklinde bir karşılama mesajı göstersin. Tabi bu xxx değerleri yerine bizim controller tarafından göndereceğimiz isimi yazsın. İlk olarak bir parametre dizisi oluşturuyoruz.

$page_data = array('isim' => 'halit');

Bu kodu fonksiyonun içindeki ilk satıra yazıyoruz yani load olayının üstüne bir boş satır açıp. page_data değişkenine dizi yükleyip parametre olarak isim eşit halit şeklinde bir eşleşme kurduk. Şimdi load->view yapısını şu şekilde değiştirelim.

$this->load->view('bizimki', $page_data);

Burada gördüğünüz gibi ikinci parametre olarak bizim dizini göndermiş olduk. Gelelim view kısmına. Burada da isim değişkenini yazdırmamız gerek. Viewde durum biraz farklı biz dizi içinde geçirmiş olsak da view tarafında dizi olarak veriyi geri almıyor direk $isim ile erişebiliyoruz. Bu CI tarafından runtime da değişken oluşturma ile alakalı. bizimki.php adlı view dosyamızı açıp aşağıdaki kodu yazalım.

Merhaba <?php echo $isim; ?>

Bu satırda php tarafında dizi içerisinde ki her anahtar bir değişkenmiş gibi atanıyor. Çalıştırıp kontrol ediyoruz.

2015-03-01-22_08_17-Mozillabizimki

Evet resimde de gördüğünüz gibi geçirdiğimiz parametre bu tarafta bir değişken gibi kullanılarak ekrana yazılmış oldu. Artık Controller-View arasında ki bağlantıyı görmüş olduk. Basitçe bir form hazırlayarak view tarafından gönderilen verinin ekrana yazılmasını sağlayacağız. Hemen view sayfamıza dönelim ve bir form oluşturalım. Sayfa kodlarını aşağıya yazıyorum.

Merhaba <?php echo $isim; ?>
<form action="/codeigniter4sample/index.php/bizimki" method="POST">
 <input type="text" name="isim"></input>
 <br />
 <input type="submit" value="Gonder"></input>
</form>

Burada formun action değerine sizin codeigniter dizininizi yazmanız gerekiyor ben codeigniter4sample kullandım, ilk derslerimizde size farklı bir isim söylemiştim buna dikkat edin. Mevcut adres çubuğunda ki değeri yazmanız gerekmekte. Şimdi controller tarafına geçip kodu şu şekilde düzenleyelim.

public function index()
 {
 $page_data = array('isim' => 'halit');
 if (isset($_POST['isim'])) {
 $page_data['isim'] = $_POST['isim'];
 }
 $this->load->view('bizimki', $page_data);
 }

Evet burada da görebileceğiniz gibi eğer posttan isim değeri gelmiş ise diziye gelen değeri aktarıyoruz. Ve sayfamızı test ediyoruz.

2015-03-01-22_18_01-Mozillabizimki

Alana mahmut yazdık ve gönder yapalım.

2015-03-01-22_19_40-Mozillabizimki21

Evet view tarafından gönderdiğimiz veriyi controller tarafından almış olduk. Tabi bu aşamada CI nin kolay yönlerini kullanmadığımı belirtmek isterim. Mantık bu şekilde işliyor. Bir sonraki yazımda temel tasarım ile birlikte yeni controller ve viewler oluşturarak projemizi geliştirmeye devam edeceğiz. Tekrar görüşünceye dek esenlikle kalın…

 

Bu yazı 2224 defa görüntülendi

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Yazar Hakkında

15 yıllık çalışma hayatında birçok proje geliştirmiş binlerce projeyi inceleme fırsatı bulmuş yazılım aşığıdır. İşini hobi olarak gören yazarımız iş hayatını profesyonelce zevkle sürdürmektedir.

Son Eklenenler