CodeIgniter ile HMVC kullanmaya başladığınızda yapmanız gereken bir ayar da routes ayarıdır. Sitenin admin ve public kullanım ayarlarını application/config/routes.php üzeindeki ayarları kullanarak yapalım.
İlk Önce .htaccess ayarlarıyla index.php’yi adres satırımızdan kaldıralım ve config.php dosyamızı düzenleyelim.
RewriteEngine on RewriteCond $1 !^(index.php|robots.txt|system|application|user_guide) RewriteRule ^(.*)$ index.php/$1 [L]
Şimdi ise application/config/config.php dosyamızdan index.php’yi kaldıralım:
$config['index_page'] = '';
Bundan sonra routes dosyamızda bazı ayarlar yapmalıyız. application/config/routes.php dosyasını açalım. Bu dosyada "default_controller" değişkeni sitemiz ilk açıldığında hangi controller dosyasının yükleneceğini gösterir. Bu yüzden bu değişkeni pages modülüne yönlendirmekte fayda var. Pages modülümüzün application/modules/pages sayfasında olduğunu kabul edersek, şunu yazmalıyız:
$route['default_controller'] = "pages";
Şimdi statik sayfalarımıza girişi düzenleyelim. Örneğin http://siteadresi/hakkimizda, http://siteadresi/tarihce adreslerine giriş istenildiğinde, site adresinden sonra girilen kelimeyi pages modülünde, page fonksiyonuna gönderip çağırmamızı istediği sayfayı bir değişken olarak alabiliriz. application/config/routes.php dosyasında:
$route['([a-zA-Z_-]+)'] = 'pages/page/$1';
Page dosyasının controller sayfasında ise gelen bilgiyi değişken olarak şöyle alırız:
function page($var=NULL){
$page = ($page == NULL) ? 'anasayfa' : $var;
}
Yukarıda yaptığımız işlemde, eğer hiç birşey girilmediyse yani sadece http://siteadresi/ geldiyse, $page değişkenine "anasayfa"yı tanımlıyoruz.
Eğer iletişim, galeri vs. sayfaları için farklı bir fonksiyon tanımlamak istiyorsak routes ayarlarımız şöyle olmalıdır:
$route['(iletisim|urunlerimiz|galeri)'] = 'pages/$1';
Yukarıdaki kod ile adres satırına iletisim, urunlerimiz ve galeri girilirse pages modülünde iletisim, ürünlerimiz ve galeri için ayrı olarak tanımlayacağımız fonksiyonları çağrılır. Örneğin:
function iletisim(){
echo 'iletisim sayfası';
}
Routes kuralı belirlerken dikkat etmeniz gereken tek şey sırasıdır. Hangi kurala göre daha önce ayrılma yapılmasını istiyorsak, o routes kuralının daha üst sırada olması gerektiğidir:
$route['(iletisim|urunlerimiz|galeri)'] = 'pages/$1'; $route['([a-zA-Z_-]+)'] = 'pages/page/$1';
Buraya kadar HMVC modülü kullanan sitenin public site erişimini tamamladık. Şimdi Admin erişimini düzenleyelim. Öcelikle dizin yapımızın şöyle olduğunu kabul edelim:
/application/modules/pages /application/modules/pages/controller/pages.php //Web tarafı /application/modules/pages/controller/admin.php //Admin tarafı /application/modules/pages/models/ /application/modules/pages/views/
İlk iş admin olarak siteye login ve logout olalım. http://siteadresi/admin adresi ile siteye girildiğinde login formu ekrana gelmelidir. Bu nedenle login ve logout controller'ını modül yapısı dışına almamızda fayda vardır. Routes.php dosyasında yapacağımız ayar şöyle olmalıdır:
$route['admin'] = "admin"; //Admin için Login | Logout tanımlama $route['admin/(login|logout)'] = "admin/$1";
Şimdi yukarıdaki dizilişe göre adres satırında admin isteği ile /application/modules/pages/controller/admin.php controller dosyasını çağıracak ayarı yapalım. Routes ayarı:
$route['admin/([a-zA-Z_-]+)'] = "$1/admin";
Böylece yukarıda yaptığımız işlemde adres çubuğuna http://siteadresi/admin/pages adresi girildiğinde admin controller dosyamız çağırılacaktır.
Pages modülünün admin controller sayfasının altındaki metodlarına erişimi için ise aşağıdaki routes ayarını yapmalısınız:
$route['admin/([a-zA-Z_-]+)/(:any)'] = "$1/admin/$2";
Böylelikle adres çubuğunda http://siteadresi/admin/pages/categories tanımlandığında admin controller sayfanızın categories fonksiyonunu çağıracaktır. Toparlarsak, yukarıda anlatılan tüm işlemlerden sonra application/config/routes.php dosyamızın son hali şöyledir:
$route['default_controller'] = "pages"; $route['(iletisim|urunlerimiz|galeri)'] = 'pages/$1'; $route['([a-zA-Z_-]+)'] = 'pages/page/$1'; $route['admin'] = "admin"; $route['admin/(login|logout)'] = "admin/$1"; $route['admin/([a-zA-Z_-]+)/(:any)'] = "$1/admin/$2"; $route['admin/([a-zA-Z_-]+)'] = "$1/admin";
Okan CİVELEK
http://www.okanck.com/
Yazarı : Fatih BAZMAN | Yorum Ekle | Etiketler : hmvc admin login
Türkiye