Anasayfa / Codeigniter / Codeigniter Default Controller ‘ ı Klasör içine Route Yapmak
codeigniter 660x330 - Codeigniter Default Controller ' ı Klasör içine Route Yapmak

Codeigniter Default Controller ‘ ı Klasör içine Route Yapmak

Başlığa bakınca anlaşılması zor olabiliyor ama başlık konusunda aklıma daha iyi bir seçenek gelmedi . O yüzden ilk önce sorunu anlatayım.  Codeigniter‘ı indirdiğinizde default controller yani siteniz açıldığınızda ekrana gelecek controller ayarınız aşağıdaki gibidir.

$route['default_controller'] = 'welcome';

Ben projem için daha düzenli bir yapı olması için controller dosyalarını frontend ve backend olarak ayırmaya karar vermiştim. Default controller dışında sorun olmamıştı. Ama aşağıdaki gibi kullanım yapınca codeigniter default controller dosyasını bulamıyor.

$route['default_controller'] = 'frontend/welcome';

Bu sorun sadece default controller için oluyor diğer controller dosyalarında sorun yok. Şimdi ise çözüme geçelim . Codeigniter application/core klasörüne MY_Router.php adında bir dosya oluşturuyoruz ve içine aşağıdaki kodları yazıyoruz.

<?php

class MY_Router extends CI_Router {
    protected function _set_default_controller() {

        if (empty($this->default_controller)) {

            show_error('Unable to determine what should be displayed. A default route has not been specified in the routing file.');
        }
        // Is the method being specified?
        if (sscanf($this->default_controller, '%[^/]/%s', $class, $method) !== 2) {
            $method = 'index';
        }

        // This is what I added, checks if the class is a directory
        if( is_dir(APPPATH.'controllers/'.$class) ) {

            // Set the class as the directory

            $this->set_directory($class);

            // $method is the class

            $class = $method;

            // Re check for slash if method has been set

            if (sscanf($method, '%[^/]/%s', $class, $method) !== 2) {
                $method = 'index';
            }
        }

        if ( ! file_exists(APPPATH.'controllers/'.$this->directory.ucfirst($class).'.php')) {

            // This will trigger 404 later

            return;
        }
        $this->set_class($class);
        $this->set_method($method);
        // Assign routed segments, index starting from 1
        $this->uri->rsegments = array(
            1 => $class,
            2 => $method
        );
        log_message('debug', 'No URI present. Default controller set.');
    }
}
İlginizi Çekebilir :   Codeigniter MY_Controller Oluşturmak

Bir cevap yazın

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