CodeIgniter'daki Yönetici sayfaları yapmak için en iyi yolu?

7 Cevap php

Ben CodeIgniter'daki bir uygulama üzerinde çalışıyorum ve ben uygulama nesneleri birkaç için yönetici sayfaları var istiyorum, ve ben bir MVC yapısı içine bu koymak için iyi bir yol ne olacağını merak ediyorum.

Idea 1: In each controller, have an admin function, and add all of the admin pages I would like into that function. example URL: domain.com/articles/admin

Idea 2 Make a new admin controller, which would have to reference many different models, and put all of the admin pages in there. example URL: domain.com/admin/articles

Hangi yol daha iyi olurdu?

Edit for clarification: yönetici işlevsellik, ben herhangi bir nesne üzerinde temel CRUD işlemleri yapmak ve söz konusu nesnenin bir listesini görüntülemek edebilmek için güçlü olmak demek.

7 Cevap

Ben bunu bireysel denetleyicileri kısmını tutarak Justin yankı olacak.

Sen tek denetleyicileri kullanabilirsiniz yetkilendirme sisteminin çeşit yüzden kurulumu (kullanıcı adı) kaydedilir ve hangi erişim onlar (admin / member / vs) sahip olduğu kimin. Here's a SO thread on CodeIgniter Auth Classes.

Görünümü daha sonra şartlı uygun bağlantıları gösterecek ve denetleyici modeli herhangi bir veri geçirerek veya bir düzenleme görünümü render önce auth kontrol ederek ilkesini zorlamak olacaktır. Yetkisiz erişim bir hata işlenmiş olabilir, ya da sadece olmayan düzenleme görünümü ile işlemek.

Bu yaklaşım, tüm işlevselliği tek denetleyicisi saklanır çünkü en mantıklı (en azından benim için) yapmak gibi görünüyor. Tek admin denetleyicisi Admin işlevleri tutmak size somethign yeni (veya kaldırmak şey) eklemek her zaman iki denetleyicileri (yönetici ve gerçek kontrolör) yönetmek zorundasınız demektir.

Her denetleyicisi auth denetimi koyarak ilgili endişeleriniz varsa, sizin kontrolörler bunu uzatmak var, sonra tüm auth kurulumu ile genel bir denetleyici sınıf oluşturabilir. : Sonunda tek denetleyici auth çek kadar basit olabilir

function edit()
{
    if(!$this->auth()){
        //display auth error, or forward to view page
    }
}

Tabii ACL uygulama çeşit bu daha iyi olurdu, ama ben CodeIgniter 'resmi' bir ACL vardır inanmıyorum.

Kesinlikle farklı bir kontrolör at least!

Ben bir tek denetleyicisi tüm yönetici fonksiyonları tutmak olduğunu düşünürdüm, ama benim programlar büyüdükçe, benim yönetim bölümünde birden fazla kumanda gerekli olduğunu fark etti.

Yani, adı "yönetici" ile benim kontrolörleri klasörü içinde bir klasör oluşturduk ve orada tüm idari kontrolörleri koydu. Yani benim klasörler gibi görünecektir:

  • application
    • controllers
      • front.php
      • welcome.php
      • admin
        • dashboard.php
        • useradmin.php
  • vs ..

Bu yaratan bir sorun, ancak, tarayıcınızda http://mysite.com/admin yazarken, bu bir 404 sayfa döndürür. Yani, "application / config / routes.php" dosyasına gitmek ve özel bir yol ekleyebilirsiniz:

$routes['admin'] = 'admin/dashboard/index';

Eğer yönetim örneğin erişebilirsiniz neyin Bu denetleyicileri klasöründe bir yönetici klasörü olması iyi bir fikirdir yoursite.com / admin / kullanıcılar.

Tüm yönetimsel ihtiyaçları olacak ve tüm yöntemleri çok gibi kullanıcı ayrıcalıklarını kontrol tarafından korunacaktır:

if ( ! $this->auth->logged_in(array('login', 'admin')))
{
    $this->session->set_flashdata('message', 'You do not have access to view this page');

    redirect('admin/users/login');
}

Sonra 'admin' klasörü dışında tüm kontrolörler olacak - sitenin türüne bağlı olarak -. Yalnızca vs hiçbir idari bölümleri, görüntüleme için olacaktır.

Idea 2 is better. system/application/controllers/admin

Burada tüm yönetici denetleyicileri tutun.

İşte yanlısı ve con her yöntemi için kapsamlı bir rehber:

http://philsturgeon.co.uk/news/2009/07/Create-an-Admin-panel-with-CodeIgniter

Eğer 'Yönetici' işlevselliği tarafından ne anlama bağlı ... Genellikle, bu bir 'Düzenle' görünümü olarak düşünülmektedir.

Ve genellikle, sen yetkili kullanıcılar (sizin durumda, Yönetici kullanıcılar sadece) düzenlemeler yapmak için izin 'Düzenle' görünümünü hizmet için varolan denetleyicisi kullanın.

Admin controller benim bahis olacağını bu yüzden kişisel bir seçim gibi, i merkeziyetçi her şeyi sahip seviyorum görünüyor.

Bu şekilde i yönetimsel görevleri değiştirme sırasında 5 farklı kontrolörleri açmak olmazdı.