Codeigniter - Controller View İlişkisi

Codeigniter - Controller View İlişkisi

Codeigniter ilerleme dersi. Controller ve view arasındaki ilişkiyi anlattım.

Önceki derslerimizde dosya yapısı konusundan bahsettik gerçi ama hatırlatmakta fayda var.

Projelerimizi “application/” dizini altında geliştireceğiz.

Controller dosyalarımız “application/controllers/” dizininde bulunacak.

View(front-end) dosyalarımız “application/views/” dizininde bulunacak.

CONTROLLER DOSYASI OLUŞTUR

anasayfa.php
 – Bu bizim controller dosyamız olsun ve içerisine aşağıda ki kodları yazalım.

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');


class Anasayfa extends CI_Controller {


    public function index()

    {

        $this->load->view('anasayfa_view');

    }

}


/* End of file anasayfa.php */

/* Location: ./application/controllers/anasayfa.php */

Ne yaptık?

İlk satırda dosyaya adres çubuğundan direk erişimi engelledik.

class Anasayfa
 ile bir sınıf(class) oluşturduk ve buna controller dosyamızın ismini atadık. (*)

extends CI_Controller{}
 ile codeigniter çekirdeğinde bulunan controller sınıfının metodlarını ve paramterlerini kendi oluşturduğumuz “Anasayfa” sınıfına dahil ediyoruz.

index()
 adında bir metod oluşturduk. Bu metod sayfamızın anasayfasını temsil eder. “/index.php” yada “/index.html” şeklinde düşünebilirsiniz.

$this->load->view('anasayfa_view);
 Oluşturduğumuz metodun içerisine kullanıcılara ilgili view sayfasını göstermek için ufak bir kod yazıyoruz.

 

İpuçları;

 $this->load->view('anasayfa_view'); = $bu_sınıfa->yükle->göster('anasayfa_view');

 4. sırada index() metodundan bahsetmiştim. Codeigniter’in bir güzelliği ise zahmetsizce seo dostu link üretebilirsiniz.

Örnek; burada index() metodu yerine hakkimizda() metodu oluşturup içerisine “hakkimizda_view” dosyasını yüklettirseydik. Tarayıcıdan “http://www.gknsoftware.com/hakkimizda” yazdığımızda, oluşturduğumuz metodun içine girerdik ve orada hangi işlemleri yaptıysak onlar karşımıza gelirdi. Yani hakkımızda sayfası oluşturmuş olurduk.

VİEW DOSYASI OLUŞTUR

anasayfa_view.php
 – Bu bizim view dosyamız olsun ve içerisine aşağıdaki kodları yazalım.

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="utf-8">

    <title>Hello Codeigniter</title>

</head>

<body>


<div id="container">

    <header id="header">

        <h1>Hello Codeigniter!</h1>

    </header><!-- /header -->


    <section id="body">

        <p><strong>Deneme!</strong> <?php echo $send_data; ?></p>

    </section>


    <footer class="footer">Page rendered in <strong>{elapsed_time}</strong> seconds</footer>

</div>


</body>

</html>

Ne yaptık?

Aslında view dosyasında pek birşey yapmadık html kodları ile basit kullanıcı arayüzü hazırladık. Ekrana 

$send_data 
isminde bir değişken yazdırdığımı farketmişsinizdir. Bu değişken controller dosyamızdan “anasayfa_view” dosyasına yolladığımız bir veri.

CONTROLLER’DAN VİEW DOSYASINA VERİ İLETİMİ

Yukarıda view dosyasında 

$send_data
 isminde bir değişken oluşturduğumu söylemiştim. Bu değişkenin karşılığı olmadığı için şuan boş. Biz bu değişkeni controller sınıfımızdan, view dosyasına veri aktarmak için oluşturduk.

Controller dosyasında;

$data['send_data'] = "Bu veri Anasayfa.php controller dosyasından gelmektedir.";

$this->load->view('anasayfa_view', $data);

işte bu şekilde data isminde bir dizi değişkeni oluşturup view dosyamızı göstereceğimiz metodumuzun 2. parametresine atıyoruz.

Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Merhabalar..view e iki tane data göndermek istiyorum fakat hata alıyorum.kodlar su sekilde <?php class home extends CI_Controller { public function __construct() { parent::__construct(); // Your own constructor code $this->load->database(); // Sayfada database e erişmemizi sağlar $this->load->helper(array('form','url')); $this->load->library("session"); } public function index() { $query = $this->db->query('select * from haberler order by id desc limit 0, 3'); // haberler tablasonu veritananından çek $data["veri"]=$query->result(); // Sorgu sonucu gelen verileri data ya yükle $query = $this->db->query('select * from moda order by id desc limit 0, 3'); // haberler tablasonu veritananından çek $data1["veri"]=$query->result(); // Sorgu sonucu gelen verileri data ya yükle $this->load->view('header'); $this->load->view('slider'); $this->load->view('content',$data,$data1); $this->load->view('footer'); } } ?> Fakat sadece $data gönderiliyor..Bunu nasıl yapabilirim acaba ? Teşekkürler

Yukarı Git