CodeIgniter Rotaları: Örnekle URL Yönlendirme

CodeIgniter Rotaları nedir?

Rotalar, URL isteklerine yanıt vermekten sorumludur. Yönlendirme, URL'yi önceden tanımlanmış rotalarla eşleştirir. Eğer rota eşleşmesi bulunamazsa CodeIgniter istisna bulunmayan bir sayfa atar.

CodeIgniter'daki rotalar aşağıdaki formül kullanılarak tanımlanır:

example.com/Controller/Method/Parameter/

İŞTE,

  • Denetleyici -URL'ye yanıt vermesi gereken denetleyici adıyla eşlenir.
  • Yöntem – denetleyicideki URI isteğine yanıt vermesi gereken yöntemle eşlenir.
  • Parametre – bu bölüm isteğe bağlıdır.

CodeIgniter Rotaları Örneği

Şimdi pratik bir URL Yönlendirmeye bakalım CodeIgniter örnek.

Aşağıdaki URL'yi göz önünde bulundurun http://localhost:3000/contacts/edit/1

İŞTE,

  • Yukarıdaki URL'ye yanıt veren denetleyicinin adı "kişiler"dir
  • Contacts denetleyici sınıfındaki yöntem “düzenle”dir
  • Düzenleme yöntemi bir parametreyi kabul eder. Örneğimizde metoda “1” değeri aktarılmaktadır.

İşte yapmayı planladığımız şeyin kısa bir arka planı:

  • Yönlendirme – yönlendirme, URL isteklerine yanıt vermekten sorumludur. CodeIgniter Routing, URL'yi önceden tanımlanmış rotalarla eşleştirir. Rota eşleşmesi bulunmazsa CodeIgniter sayfa bulunamadı istisnası atar.
  • Kontrolörler – rotalar kontrolörlere bağlıdır. Kontrolörler modelleri ve görünümleri birbirine yapıştırır. Modelden veri/iş mantığı isteği ve sonuçların görünüm sunumu aracılığıyla döndürülmesi. Bir URL, CodeIgniter'daki bir Rota ile eşleştirildiğinde, veri kaynağıyla, iş mantığıyla etkileşime giren ve sonuçları görüntüleyen görünümü döndüren bir denetleyici genel işlevine iletilir.
  • Görünümler – sunumdan görüşler sorumludur. Bir görünüm genellikle HTML, CSS ve JavaSenaryo. Web sayfasının kullanıcıya gösterilmesinden sorumlu olan kısımdır. Tipik olarak, görüntülenen veriler genellikle veritabanından veya mevcut diğer veri kaynaklarından alınır.

Gerçek dünya projesinde yönlendiricilerin nasıl uygulanacağını öğrenmek için, iletişim bilgilerini yönetmek için bir uygulama oluşturduğumuzu varsayacağız. Aşağıdaki tablo, çalışılacak URL'leri göstermektedir.

S / N URL Rota kontrolör Yöntem
1 / $rota['default_controller'] Hoşgeldiniz indeks
2 /kişiler $rota['kişiler'] Bize Ulaşın indeks
3 /kişiler/oluştur $rota['oluştur'] Bize Ulaşın yaratmak
4 /kişiler/düzenle/kimlik $rota['düzenle/:id'] Bize Ulaşın düzenleme
5 /kişiler/güncelleme/kimlik $rota['güncelleme/:id'] Bize Ulaşın güncelleştirme
6 /kişiler/sil/kimlik $rota['sil/:id'] Bize Ulaşın silmek

Uygulamamızın rotalarını yukarıdaki tabloya göre oluşturacağız. URL'leri, CodeIgniter rotasını tanımladık ve bunları ilgili denetleyici ve yöntem adlarıyla eşleştirdik.

Uygulama için URL Yönlendirme Oluşturma

Eğitim projemiz için CodeIgniter URL Yönlendirmesi oluşturalım

application/config/routes.php dosyasını açın

Rotaları aşağıdakilerle eşleşecek şekilde değiştirin

$route['default_controller'] = 'welcome';
$route['contacts'] = 'contacts';
$route['create'] = 'contacts/create';
$route['edit/:id'] = 'contacts/edit';
$route['update/:id'] = 'contacts/update';
$route['delete/:id'] = 'contacts/delete';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

İŞTE,

  • $route['default_controller'] = 'hoş geldiniz'; Varsayılan denetleyiciyi tanımlar Hoş Geldiniz.
  • $route['contacts'] = 'kişiler'; Kişiler denetleyicisindeki dizin yöntemini çağıran bir kişi yolunu tanımlar
  • $route['create'] = 'kişiler/oluştur'; Contacts denetleyicisine işaret eden ve create yöntemini çağıran bir rota oluşturmayı tanımlar.
  • $route['edit/:id'] = 'kişiler/düzenle'; kimlik parametresini kabul eden ve Kişiler denetleyicisinin düzenleme yöntemine işaret eden bir rota düzenlemesini tanımlar
  • $route['update/:id'] = 'kişiler/güncelleme'; id parametresini kabul eden ve Contacts sınıfının güncelleme yöntemine işaret eden bir rota güncellemesini tanımlar.
  • $route['delete/:id'] = 'kişiler/sil'; id parametresini kabul eden ve Contacts denetleyicisinin silme yöntemine işaret eden bir rota silmeyi tanımlar.

Aşağıdaki tablo, yukarıda tanımlanan rotalardan türetilen ilgili URL'leri göstermektedir

S / N Rota İlgili URL
1 $route['default_controller'] = 'hoş geldiniz'; http://localhost:3000
2 $route['contacts'] = 'kişiler'; http://localhost:3000/contacts
3 $route['create'] = 'kişiler/oluştur'; http://localhost:3000/contacts/create
4 $route['edit/:id'] = 'kişiler/düzenle'; http://localhost:3000/contacts/edit/1
5 $route['update/:id'] = 'kişiler/güncelleme'; http://localhost:3000/contacts/update/1
6 $route['delete/:id'] = 'kişiler/sil'; http://localhost:3000/contacts/delete/1

Artık rotaları ele aldığımıza göre, rotalarda belirtilen eylemlere yanıt verecek Kişiler denetleyicisini oluşturalım.

CodeIgniter'da application/controllers/Contacts.php dosyasında Contacts.php olarak yeni bir Rota dosyası oluşturun

Aşağıdaki kodu ekleyin

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

class Contacts extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->helper('url');
    }

    public function index() {
        $this->load->view('header');
        $this->load->view('contacts/index');
        $this->load->view('footer');
    }

    public function create() {
        $this->load->view('header');
        $this->load->view('contacts/create');
        $this->load->view('footer');
    }

    public function edit($id) {
        $this->load->view('header');
        $this->load->view('contacts/edit');
        $this->load->view('footer');
    }

    public function update($id) {
        $this->load->view('header');
        $this->load->view('contacts/update');
        $this->load->view('footer');
    }

    public function delete($id) {
        $this->load->view('header');
        $this->load->view('contacts/delete');
        $this->load->view('footer');
    }
}

İŞTE,

  • Sınıf kişileri extends CI_Controller {..} denetleyici sınıfımızı tanımlar ve CodeIgniter ile birlikte gelen CI_Controller sınıfını genişletir.
  • Yukarıda tanımlanan yöntemler tanımladığımız rotalara karşılık gelir ve delete gibi parametrelere sahip olanlar $id parametresini kabul eder.
  • İşlevlerin üç (3) görünüm yüklediğine dikkat edin. Üstbilgi ve altbilgi tüm yöntemler için ortaktır. Ortadaki görünüm eyleme çok özeldir, yani silme işlevi için sil, işlev oluşturmak için görünüm oluşturma vb. Hatırlanması gereken bir diğer önemli nokta, görünümlerin kişiler alt dizininden yüklendiğidir.

CodeIgniter Görünümleri

CodeIgniter Routelarımızı web tarayıcısında Parametrelerle test edebilmemiz için hala bir adım daha atmamız gerekiyor. Yukarıdaki denetleyici yöntemlerine karşılık gelen görünümleri oluşturalım.

Aşağıdaki resim uygulamanızın nasıl görüneceğini göstermektedir

CodeIgniter Görünümleri

application/views'da aşağıdaki dosyaları oluşturun

header.php – this file will contain contacts app menu and the header
footer.php – this files will contain the application footer.

Görünümler uygulamasında/görünümlerde/kişilerde yeni bir kişi dizini oluşturun

İçerisinde aşağıdaki dosyaları oluşturun

index.php
create.php
edit.php

Dosya yapınız aşağıdaki gibi olmalı

CodeIgniter Görünümleri

Şimdi head.php dosyasını güncelleyelim

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>CodeIgniter Routes</title>
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.2/css/bulma.min.css">
        <script defer src="https://use.fontawesome.com/releases/v5.3.1/js/all.js"></script>
    </head>
    <body>
        <section class="section">
            <div class="container">
                <h1 class="title">CI Contacts v1</h1>
                <h2 class="subtitle">CodeIgniter contacts management app</h2>
                <div class="columns">
                    <div class="column is-one-quarter">
                        <aside class="menu">
                            <p class="menu-label">
                                General
                            </p>
                            <ul class="menu-list">
                                <li><a class="is-active" href="#">Dashboard</a></li>
                                <li><a href="<?=site_url('contacts/create')?>">New Contact</a></li>
                                <li><a href="<?=site_url('contacts/edit/1')?>">Edit Contacts</a></li>
                            </ul>
                            <p class="menu-label">
                                Settings
                            </p>
                            <ul class="menu-list">
                                <li><a href="#">SMS</a></li>
                                <li><a href="#">Email</a></li>
                            </ul>
                        </aside>
                    </div>

İŞTE,

  • Yukarıdaki HTML kodu Burma CSS'yi bir CDN ağından yükler.

Aşağıda footer.php için kod bulunmaktadır

            </div>
            </div>
        </section>
    </body>
</html>

Şimdi kişiler için index.php, edit.php ve create.php dosyalarının kodunu ekleyelim.

index.php
<div class="column">Index content goes here...</div>
edit.php
<div class="column">Edit content goes here...</div>
create.php
<div class="column">Create content goes here...</div>

Yapılan tüm değişiklikleri kaydedebilirsiniz.

Aşağıdaki URL'yi web tarayıcınızda açın http://localhost:3000/contacts/

Yeni Kişi ve Kişiyi Düzenle bağlantılarına tıklayabilir ve ne olacağını görebilirsiniz

ÖZET

  • CI'daki rotalar, URL isteklerine yanıt vermekten sorumludur. Yönlendirme, URL'yi önceden tanımlanmış rotalarla eşleştirir. CodeIgniter Rota eşleşmesi bulunamazsa, CodeIgniter istisna bulunmayan bir sayfa atar.
  • CI Routing, URL isteklerine yanıt vermekten sorumludur. Yönlendirme, URL'yi önceden tanımlanmış rotalarla eşleştirir.
  • Kontrolörler modelleri ve görünümleri birbirine yapıştırır. Modelden veri/iş mantığı isteği ve sonuçların görünüm sunumu aracılığıyla döndürülmesi.
  • Görünümler sunumdan sorumludur. Bir görünüm genellikle HTML, CSS ve JavaSenaryo.
  • Bu eğitimde, gerçek dünyadaki örnek bir uygulama için CodeIgniter'da Rotaların nasıl oluşturulacağını öğrendik ve CodeIgniter'ı geliştirmeye başlamak için bilmeniz gereken yönlendirmenin temellerini ele aldık.