Die beste Methode, um Admin-Seiten in CodeIgniter zu erstellen?

8

Ich arbeite an einer App in CodeIgniter, und ich möchte Admin-Seiten für mehrere Objekte in der Anwendung haben, und ich frage mich, was wäre der bessere Weg, diese in eine MVC-Struktur zu setzen.

Idee 1:  In jedem Controller, haben Sie eine Admin-Funktion, und fügen Sie alle Admin-Seiten, die ich möchte in diese Funktion. Beispiel URL: domain.com/articles/admin

Idee 2  Erstellen Sie einen neuen Admin-Controller, der viele verschiedene Modelle referenzieren muss und legen Sie alle Admin-Seiten dort ein. Beispiel URL: domain.com/admin/articles

Welcher Weg wäre besser?

Bearbeite zur Klarstellung: Mit Admin-Funktionalität meine ich, dass ich die grundlegenden CRUD-Aktionen für jedes Objekt ausführen und eine Liste aller Objekte anzeigen kann.

    
GSto 09.11.2009, 20:22
quelle

7 Antworten

2

Ich werde Justin Echo wiedergeben, damit es Teil der einzelnen Controller bleibt.

Sie sollten eine Art von Autorisierungssystem einrichten, das die einzelnen Controller verwenden können, also wer angemeldet ist (Benutzername) und welchen Zugriff sie haben (admin / member / etc). Hier ist ein SO-Thread für CodeIgniter-Auth-Klassen .

Die Ansicht würde dann bedingt die entsprechenden Verknüpfungen anzeigen, und der Controller würde die Richtlinie erzwingen, indem er die Berechtigung überprüft, bevor er Daten an das Modell weitergibt oder eine Bearbeitungsansicht rendert. Bei nicht autorisiertem Zugriff kann ein Fehler angezeigt werden oder einfach mit der nicht bearbeiteten Ansicht gerendert werden.

Dieser Ansatz scheint (zumindest für mich) am sinnvollsten zu sein, weil alle Funktionen in dem einzelnen Controller gespeichert sind. Wenn Sie Admin-Funktionen in einem einzelnen Admin-Controller verwalten, müssen Sie zwei Controller (den Admin und den tatsächlichen Controller) jedes Mal verwalten, wenn Sie etwas Neues hinzufügen (oder etwas entfernen).

Wenn Sie daran interessiert sind, jeden Controller auth zu checken, können Sie eine generische Controller-Klasse mit allen Auth-Setups erstellen und dann von Ihren Controllern erweitern lassen. Am Ende könnte die individuelle Controllerauthentifizierung so einfach sein wie:

%Vor%

Natürlich würde eine Art ACL-Implementierung das besser machen, aber ich glaube nicht, dass CodeIgniter eine 'offizielle' ACL hat.

    
Tim Lytle 10.11.2009, 01:57
quelle
6

Definitiv ein anderer Controller mindestens!

Ich dachte immer, ich könnte alle meine Admin-Funktionen in einem einzigen Controller behalten, aber als meine Programme wuchsen, wurde mir klar, dass ich mehrere Controller in meinem Administrationsbereich brauchte.

Also habe ich einen Ordner in meinem Controller-Ordner mit dem Namen "admin" erstellt und alle meine administrativen Controller dort eingetragen. So würden meine Ordner etwa wie folgt aussehen:

  • Anwendung
    • Controller
      • front.php
      • Willkommen.php
      • Admin
        • dashboard.php
        • useradmin.php
  • usw. ...

Ein Problem, das dadurch entsteht, ist, wenn Sie in Ihrem Browser Ссылка eingeben, wird ein 404 zurückgegeben Seite. Gehen Sie also in Ihre Datei "application / config / routes.php" und fügen Sie eine benutzerdefinierte Route hinzu:

%Vor%     
caseyamcl 10.11.2009 13:33
quelle
2

Es ist eine gute Idee, einen Admin-Ordner im Controller-Ordner zu haben, in dem Sie auf Ihre Verwaltung zugreifen können, z. yoursite.com/admin/users.

Alle Ihre administrativen Anforderungen sind da und alle Methoden werden geschützt, indem Benutzerrechte wie folgt überprüft werden:

%Vor%

Dann werden alle Controller außerhalb des Ordners "admin" - abhängig von Ihrem Typ der Site - nur zur Ansicht usw. verwendet. Keine administrativen Teile.

    
Thorpe Obazee 10.11.2009 01:43
quelle
2

Idee 2 ist besser. System / Anwendung / Controller / Admin

Sie behalten alle Ihre Admin-Controller hier.

    
shin 10.11.2009 13:44
quelle
2

Hier finden Sie eine ausführliche Anleitung zu den Vor- und Nachteilen jeder Methode:

Ссылка

    
Phil Sturgeon 01.10.2010 12:02
quelle
1

Je nachdem, was Sie unter "Admin" -Funktionalität verstehen, wird dies normalerweise als "Bearbeiten" -Ansicht betrachtet.

In der Regel verwenden Sie den vorhandenen Controller, um die Ansicht "Bearbeiten" zu bedienen, sodass autorisierte Benutzer die Änderungen vornehmen können (in Ihrem Fall nur Admin-Benutzer).

    
Justin Niessner 09.11.2009 20:25
quelle
0

Sieht nach einer persönlichen Entscheidung aus, ich liebe es, alles zentralisiert zu haben, so dass der Admin-Controller meine Wette ist.

Auf diese Weise würde ich nicht 5 verschiedene Controller öffnen müssen, wenn ich Admin-Aufgaben ändere.

    
pablasso 09.11.2009 21:32
quelle

Tags und Links