8
votes

Meilleure façon de faire des pages d'administration dans le codéidien?

Je travaille sur une application dans CECONDIDEIDEDIDER et je souhaite avoir des pages d'administration pour plusieurs des objets de la demande, et je me demande quel serait la meilleure façon de les mettre dans une structure MVC.

idée 1: Dans chaque contrôleur, avez une fonction d'administration et ajoutez toutes les pages d'administration que je voudrais dans cette fonction. Exemple url: domain.com/articles/admin

idée 2 Faites un nouveau contrôleur d'administrateur, qui devrait faire référence à de nombreux modèles différents et mettre toutes les pages d'administration là-bas. Exemple url: domain.com/admin/articles

Quel chemin serait mieux?

Modifier pour clarification: par fonctionnalité d'administration, je veux dire être capable de faire les actions de crud de base sur n'importe quel objet et de pouvoir afficher une liste de tout cet objet.


0 commentaires

7 Réponses :


1
votes

Selon ce que vous entendez par «administrateur» ... Généralement, cela est considéré comme une vue «Edit».

Et typiquement, vous utilisez le contrôleur existant pour servir la vue "Edit" permettant aux utilisateurs autorisés de définir les modifications (dans votre cas, des utilisateurs d'administration uniquement).


0 commentaires

0
votes

ressemble à un choix personnel, j'aime avoir tout ce qui est centralisé pour que le contrôleur d'administrateur soit mon pari.

De cette façon, je ne serais pas à ouvrir 5 contrôleurs différents lors de la modification des tâches d'administration.


2 commentaires

Cela ne se développe pas bien. Le problème ici est que vous vous munissez ensemble beaucoup de code non liés. Chaque fois que le moteur PHP fonctionne sur le contrôleur, il doit tout compiler dans votre backend et non seulement les choses pertinentes pour l'action.


Je peux argumenter le contraire. Les zones d'administration ne sont pas intensives de la circulation, les pages d'utilisateurs sont et si vous munissez-vous une zone d'administration pour chaque section, le moteur doit fonctionner sur chaque code administrateur qui n'est totalement pas pertinent pour l'utilisateur, d'où un gaspillage. Néanmoins, cela ne compte pas vraiment avec l'utilisation des cachines de code.



2
votes

C'est une bonne idée d'avoir un dossier d'administrateur dans le dossier des contrôleurs dans lequel vous pouvez accéder à votre administration par exemple. YOURSITE.COM/ADMIN/USERSER. REPHONEZ Vos besoins administratifs seront là et toutes les méthodes seront protégées en vérifiant les privilèges de l'utilisateur, comme: xxx

puis tous les contrôleurs à l'extérieur Le dossier "admin" sera - en fonction de votre type de site - ne sera que pour la visualisation, etc. Pas de portions administratives.


1 commentaires

Vous faites cela dans chaque méthode? Vous devriez le faire dans le constructeur du contrôleur ou d'un contrôleur de base pour enregistrer la répétition. Philsturgeon.co.uk/news/2010/ 02 / ...



2
votes

Je vais faire écho à Justin en maintenant la partie des contrôleurs individuels.

Vous devez configurer une sorte de système d'autorisation que les contrôleurs individuels peuvent utiliser pour ainsi être connecté (nom d'utilisateur) et quel accès ils ont (admin / membre / etc.). Voici un thread SO sur les classes d'authentifier de codeigniter . P> La vue montrerait ensuite conditionnellement les liens appropriés et le contrôleur appliquerait la politique en cochant l'autorité avant de transmettre toutes les données au modèle ou en rendant une vue d'édition. Sur l'accès non autorisé, une erreur pourrait être rendue, ou simplement rendre avec la vue non modifiée. P>

Cette approche semble avoir le plus de sens (au moins pour moi) car toute la fonctionnalité est stockée dans le contrôleur individuel . Garder les fonctions d'administrateur dans un seul contrôleur d'administrateur signifie que vous devez gérer deux contrôleurs (l'administrateur et le contrôleur actuel) à chaque fois que vous ajoutez de quelque chose de nouveau (ou supprimez quelque chose). P>

Si vous êtes préoccupé par la mise en vérification automatique de chaque contrôleur, vous pouvez créer une classe de contrôleur générique avec toute la configuration d'authentification, puis les contrôleurs l'étendent. En fin de compte, le chèque d'authentification du contrôleur individuel pourrait être aussi simple que: P>

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


1 commentaires

De la poignée des bowvotes - quiconque se souciait d'expliquer pourquoi?



6
votes

définitivement un contrôleur différent au moins!

J'avais l'habitude de penser que je pouvais conserver toutes mes fonctions d'administrateur dans un seul contrôleur, mais comme mes programmes ont grandi, j'ai compris que j'avais besoin de plusieurs contrôleurs Dans ma section d'administration.

Donc, j'ai créé un dossier dans mon dossier de contrôleurs avec le nom "Admin" et mettez tous mes contrôleurs administratifs là-bas. Donc, mes dossiers ressemblaient à quelque chose comme:

  • application
    • contrôleurs
      • front.php
      • welcome.php
      • admin
        • tableau de bord.php
        • useradmin.php
        • etc ...

          Un problème Ceci crée, cependant, est lorsque vous tapez http://mysite.com/ admin dans votre navigateur, il renvoie une page 404. Donc, allez à votre fichier "Application / Config / Config / Routtes.PHP" et ajoutez une itinéraire personnalisée: xxx


0 commentaires

2
votes

idée 2 est meilleur. Système / application / contrôleurs / admin

Vous gardez tous vos contrôleurs d'administration ici.


0 commentaires

2
votes

0 commentaires