Meilleur moyen de rendre les pages d'administration dans CodeIgniter?
Je suis en train de travailler sur une application dans CodeIgniter, et je veux avoir des pages d'administration de plusieurs objets dans l'application, et je me demandais quelle serait la meilleure façon de les mettre en une structure MVC.
Idée 1:
Dans chaque contrôleur, ont un admin fonction et ajouter toutes les pages d'administration, je voudrais dans cette fonction.
exemple d'URL: domain.com/articles/admin
Idée 2
Faire une nouvelle admin contrôleur, ce qui aurait pour faire référence à de nombreux modèles différents, et mettre toutes les pages d'administration.
exemple d'URL: domain.com/admin/articles
Qui serait mieux?
Modifier pour la clarification: Par admin fonctionnalité, je veux dire être capable de faire le CRUD de base des actions sur n'importe quel objet, et être en mesure d'afficher une liste de l'ensemble de l'objet.
OriginalL'auteur GSto | 2009-11-09
Vous devez vous connecter pour publier un commentaire.
Je vais echo Justin dans le maintien de cette partie de l'individu contrôleurs.
Vous devez configurer une sorte de système d'autorisation que l'individu contrôleurs de peut utiliser pour qui donc est connecté (nom d'utilisateur) et que l'accès qu'ils ont (admin/membres/etc). Voici un thread sur CodeIgniter Auth Classes.
La vue serait alors conditionnellement montrer les liens appropriés, et le contrôleur appliquer la politique par la vérification de l'authentification avant de passer toute les données du modèle ou du rendu d'une vue d'édition. Sur l'accès non autorisé, une erreur pourrait être rendue ou simplement à rendre avec la non-modification de la vue.
Cette approche semble faire le plus de sens (au moins pour moi) parce que toutes les fonctionnalités sont stockées dans la personne du contrôleur. En gardant admin fonctions dans un seul admin contrôleur signifie que vous aurez à gérer les deux contrôleurs (l'admin et le contrôleur) chaque fois que vous ajoutez somethign nouveau (ou supprimer quelque chose).
Si vous êtes inquiet au sujet de mettre auth vérifier dans chaque contrôleur, vous pouvez créer un générique de contrôleur de classe avec tous les auth de configuration, puis avoir votre contrôleurs de le prolonger. En fin de compte individuel du contrôleur auth contrôle pourrait être aussi simple que:
Bien sûr, une sorte de ACL mise en œuvre permettrait de faire mieux, mais je ne crois pas que CodeIgniter est un "officielle" de l'ACL.
OriginalL'auteur Tim Lytle
Certainement un autre contrôleur de au moins!
J'ai l'habitude de penser que je pourrais garder tous mes admin fonctions dans un seul contrôleur, mais comme mes programmes a augmenté, j'ai réalisé que j'avais besoin de plusieurs contrôleurs dans ma section de l'administration.
Donc, j'ai créé un dossier à l'intérieur de mon dossier contrôleurs avec le nom "admin" et de mettre tous mes administrative contrôleurs de là. Donc mes dossiers ressemblerait à quelque chose comme:
Un problème cela crée toutefois, lorsque vous tapez http://mysite.com/admin dans votre navigateur, il renvoie une page d'erreur 404. Donc, allez à votre "application/config/routes.php" du fichier et ajoutez un itinéraire personnalisé:
OriginalL'auteur caseyamcl
C'est une bonne idée d'avoir un dossier admin dans le dossier controllers où vous pouvez accéder à votre administration par exemple yoursite.com/admin/users.
Tous vos besoins administratifs seront là et toutes les méthodes seront protégés par la vérification des privilèges d'utilisateur:
Puis tous les contrôleurs en dehors de la 'admin' dossier - en fonction de votre type de site sera uniquement pour l'affichage, etc.. pas de portions administratives.
bien sûr, vous pouvez le faire dans un contrôleur de base.
OriginalL'auteur Thorpe Obazee
Idée 2, c'est mieux.
système/application/controllers/admin
Vous conservez tous vos admin contrôleurs ici.
OriginalL'auteur shin
Ici est un guide complet pour les pro et les inconvénients de chaque méthode:
http://philsturgeon.co.uk/news/2009/07/Create-an-Admin-panel-with-CodeIgniter
OriginalL'auteur Phil Sturgeon
En fonction de ce que vous entendez par 'Admin' de la fonctionnalité...en général, cela est considéré comme un "Modifier" de la vue.
Et en général, vous utilisez le contrôleur existant pour servir le "Modifier" vue permettant aux utilisateurs autorisés pour effectuer les modifications (dans votre cas, les utilisateurs Admin uniquement).
OriginalL'auteur Justin Niessner
Ressemble à un choix personnel, j'aime avoir tout centralisé donc, l'administrateur contrôleur serait mon pari.
De cette façon je n'aurais pas à ouvrir jusqu'à 5 différents contrôleurs lors de la modification des tâches d'administration.
Je peux affirment le contraire. Zone d'Admin ne sont pas de la circulation intensive, pages utilisateur sont, et si vous êtes munging ensemble d'une zone d'administration pour chaque section, le moteur doit fonctionner sur tous les admin code qui est totalement hors de propos à l'utilisateur, d'où un gaspillage. Encore, ce n'est pas vraiment de l'importance à l'utilisation de code cachers.
OriginalL'auteur pablasso