web-dev-qa-db-fra.com

Administrateur séparé et avant dans CodeDigniter

Quelle est la meilleure façon de séparer admin et front-end pour un site Web dans CodeDIGNITiter, où je voudrais utiliser toutes les bibliothèques, modèles, aides, etc. en commun, mais seuls les contrôleurs et les vues seront séparés.

Je veux une manière plus appropriée, pour la performance, la simplicité et le partage de modèles et de bibliothèques, etc.

18
Sohail

Je suggère fortement de lire les méthodes décrites dans cet article par CI Dev Phil Sturgeon:

http://philsturgeon.co.uk/blog/2009/07/create-an-Admin-Panel-with-CodeItre

Mon conseil: Utilisez des modules pour organiser votre projet.

https://bitbucket.org/wiredesignz/codeigner-modular-extensions-hmvc/wiki/home

Créez un contrôleur de base pour l'avant et/ou le backend. Quelque chose comme ça:

// 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
    }
}

Les contrôleurs d'extrémité arrière extend Admin_Controller et les contrôleurs d'extrémité avant extend Public_Controller. Le contrôleur de base d'extrémité avant n'est pas vraiment nécessaire, mais dans ce par exemple, et peut être utile. Vous pouvez prolonger MY_Controller Au lieu de cela, si vous voulez.

Utilisez routage URI si nécessaire et créez des contrôleurs distincts pour votre extrémité avant et votre arrière-plan. Tous les aides, classes, modèles, etc. peuvent être partagés si les contrôleurs d'extrémité avant et arrière vivent dans la même application.

16
Wesley Murch

J'utilise une approche très simple: dossiers de fichiers. Consultez la section Guide de l'utilisateur CI, Organisation de vos contrôleurs en sous-dossiers .

J'ai mon site Web en face publique construit comme tout autre serait construit avec CodeDIconiter. Ensuite, j'ai deux dossiers supplémentaires, controllers/admin Et views/admin.

Les contrôleurs d'administrateur sont accessibles via http: // [nom d'hôte]/admin/contrôleur et se comporter comme tout autre contrôleur, sauf qu'ils ont des contrôles d'authentification spécifiques. De même, les vues sont simplement appelées avec le nom du dossier inclus: $this->load->view('admin/theview');.

Je n'ai pas trouvé de raison de faire quelque chose de plus compliqué que cela.

10
Mike S.

Vous pouvez tous trouver une solution complète ici, https://github.com/bhuban/modulaire

Séparation de module pour admin et front-end à l'aide de la séparation HMVC et de modèle à l'aide de bibliothèques de gabarits

J'utilise deux bibliothèques tierces, vous pouvez le trouver dans le fichier zip.

  1. HMVC pour modulaire développé par wiredesignz
  2. Modèle de modèle pour templier par Phil Sturgeon

Il suffit de le décompresser dans le répertoire racine de votre serveur de serveur Web et de votre exécution

localhost/modular for front-end

et

localhost/modular/admin for back-end

application/back-modules, c'est pour les modules d'arrière-plan

application/front-modules, c'est pour les modules frontaux

de la même manière templates/admin pour les modèles d'arrière-plan templates/front pour les modèles frontaux

themes/admin Pour les thèmes de fin de course themes/front pour les thèmes frontaux

Rien de piraté dans le code d'origine juste configuré à l'aide de config.php et index.php

3
Bhuban