2011-09-22 16 views
17

Tüm kitaplıkları, modelleri, yardımcıları vb. Ortak kullanımda olduğu gibi bir web sitesi için yönetici ve ön uçları ayırmanın en iyi yolu nedir, ancak yalnızca denetleyiciler ve Görünümler ayrı.Kod yöneticisinde Ayrı Yönetici ve Ön

Ben vs. performans, basitlik ve paylaşım modelleri ve kütüphaneler için daha uygun bir yol, istediğiniz

cevap

16

ederim CI dev Phil Sturgeon tarafından bu makalede özetlenen yöntemler okumanızı öneririz:

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

Tavsiyem: Projenizi düzenlemek için modülleri kullanın.

https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/wiki/Home

ön ve/veya arka uç için bir base controller oluşturun. Böyle bir şey:

// core/MY_Controller.php 
/** 
* Base Controller 
* 
*/ 
class MY_Controller extends CI_Controller { 
         // or MX_Controller if you use HMVC, linked above 
    function __construct() 
    { 
     parent::__construct(); 
     // Load shared resources here or in autoload.php 
    } 
} 

/** 
* Back end Controller 
* 
*/ 
class Admin_Controller extends MY_Controller { 

    function __construct() 
    { 
     parent::__construct(); 
     // Check login, load back end dependencies 
    } 
} 

/** 
* Default Front-end Controller 
* 
*/ 
class Public_Controller extends MY_Controller { 

    function __construct() 
    { 
     parent::__construct(); 
     // Load any front-end only dependencies 
    } 
} 

Arka uç kontrolörleri extend Admin_Controller olacak ve ön uç kontrolörleri extend Public_Controller olacak. Ön uç temel denetleyicisi gerçekten gerekli değil, ama bir örnek olarak, ve yararlı olabilir. İsterseniz MY_Controller'u uzatabilirsiniz.

Gerektiğinde, URI routing kullanın ve ön uç ve arka uçlarınız için ayrı denetleyiciler oluşturun. Hem ön hem de arka uç denetleyicileri aynı uygulamada yaşıyorsa tüm yardımcılar, sınıflar, modeller vb. Paylaşılabilir.

+0

Bu yaklaşımı çok kullanışlıdır, ancak bir sorum var çünkü neden anlamadım. Neden bir MY_Controller oluşturuyorsunuz? bu gerekli?? Admin_Controller ve Public_Controller bunun yerine CI_Controller'ı uzatırsa ne olur? Bu da doğru olur mu? – Lykos

+0

Bitbucket bağlantısı çalışmıyor. –

9

Çok basit bir yaklaşım kullanıyorum: dosya klasörleri. CI Kullanıcı Kılavuzu bölümüne, Organizing Your Controllers into Sub-folders'a bakın.

Ben herkese açık web sitemi CodeIgniter ile inşa edilmiş diğer inşa edilmiş var. Sonra iki ek klasörlerim var, controllers/admin ve views/admin.

Yönetici denetleyicilerine http: // [ana bilgisayar adı]/yönetici/denetleyici aracılığıyla erişilir ve belirli kimlik doğrulama denetimleri dışında başka herhangi bir denetleyici gibi davranılır. Benzer şekilde, görünümler sadece dahil olan klasör adıyla çağrılır: $this->load->view('admin/theview');.

Bundan daha karmaşık bir şey yapmak için bir neden bulamadım. Hepiniz burada üzerinde tam bir çözüm bulabilirsiniz

+0

Hey "Denetleyicilerinizi Alt Klasörler'e göre düzenliyorsunuz." link çalışmıyorsa lütfen beni güncelleyin. –

+2

Bu, http://ellislab.com/codeigniter%20/user-guide/general/controllers.html#subfolders –

+0

Teşekkür @Pramod'un en yeni bağlantısıdır. Link güncellendi. –

2

, yönetici ve ön uç HMVC kullanarak ve iki üçüncü parti kütüphaneleri kullanıyorum

şablon ayırma şablon kütüphaneleri kullanmak için https://github.com/bhuban/modular

Modül ayrılması, bunu bulabilirsiniz zip dosyasında.Phil Sturgeon tarafından şablonu için wiredesignz

  • Şablon motoru tarafından geliştirilen modüler için

    1. HMVC

    Sadece web sunucusu kök dizine halletmek ve

    localhost/modular for front-end 
    

    ve

    localhost/modular/admin for back-end 
    
    çalıştırmak

    application/back-modules, bunun ön uç modüllerinin ön uç şablonları için arka uç şablonları templates/front için benzer templates/admin

    içindir, arka uç modüllerinin

    application/front-modules içindir

    hiçbir şey orijinal kodda kesmek ön uç temaları arka uç temalar themes/front için themes/admin sadece yapılandırılmış config.php ve index.php kullanarak

  • +0

    Bu, aradığım şey! ama erişmeye çalıştığımda bir hatam var: Varsayılan denetleyiciniz yüklenemedi. Lütfen Routes.php dosyanızda belirtilen denetleyicinin geçerli olduğundan emin olun. Bunu çözmek için bir fikrin var mı? Teşekkürler –

    İlgili konular