Beste Weg, um Admin-Seiten in CodeIgniter?
Arbeite ich an einer app in CodeIgniter, und ich möchte die admin-Seiten für mehrere Objekte in der Anwendung, und ich Frage mich, was wäre der bessere Weg, um diese in eine MVC-Struktur.
Idee 1:
In jedem controller, eine admin-Funktion, und fügen Sie alle admin-Seiten würde ich gerne in dieser Funktion.
Beispiel-URL: domain.com/articles/admin
Idee 2
Eine neue admin-controller, das hätte der Referenz viele verschiedene Modelle, und alle von admin Seiten gibt.
Beispiel-URL: domain.com/admin/articles
Welcher Weg besser wäre?
Edit zur Klarstellung: Von admin Funktionen, ich meine, das tun zu können, die grundlegenden CRUD-Aktionen auf einem Objekt, und in der Lage sein, um eine Liste aller Sprach-Objekt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werde ich echo Justin halten es Teil von den einzelnen Steuerungen.
Sollten Sie das setup irgendeine Art von Genehmigung system, dass die einzelnen Steuerungen können so, wer angemeldet ist (Benutzername), und welchen Zugang haben Sie (admin/member/usw.). Hier ist SO ein thread auf CodeIgniter Auth-Klassen.
Ansicht würde dann bedingt zeigen die entsprechenden links, und der controller würde die Durchsetzung der Politik durch die überprüfung der auth vor der Weitergabe jeglicher Daten an das Modell oder das Rendern einer Ansicht Bearbeiten. Auf unerlaubten Zugriff ein Fehler gemacht werden könnte, oder einfach Rendern mit dem nicht-Bearbeiten-Ansicht.
Dieser Ansatz scheint am meisten Sinn machen (zumindest für mich), da alle Funktionen, die gespeichert ist in die einzelnen controller. Halten Sie admin-Funktionen in einem einzigen admin-controller bedeutet, dass Sie verwalten müssen zwei Controller (der admin, und der tatsächliche controller) jedes mal, wenn Sie hinzufügen, somethign neuen (oder etwas entfernen).
Wenn Sie sich sorgen darüber machen, dass auth-überprüfung in jedem controller, Sie konnte erstellen eine generische controller-Klasse mit all den auth-setup, dann haben Sie Ihren Controller erweitern. Am Ende der einzelnen controller auth überprüfen könnte so einfach sein wie:
Natürlich eine Art von ACL-Implementierung wäre besser, aber ich glaube nicht, dass CodeIgniter hat eine 'offizielle' ACL.
Jeden Fall einen anderen controller mindestens!
Dachte ich, ich könnte alle meine admin-Funktionen in einem einzelnen controller, aber da meine Programme wuchs, erkannte ich, dass ich brauchte mehrere Controller in meinen Administrationsbereich.
So, ich habe einen Ordner in meinem Ordner Controller mit dem Namen "admin" und legte alle meine administrativen Controller drin. Also mein Ordner sieht dann etwa so aus:
Einem problem, das daraus entsteht, ist jedoch, wenn Sie geben Sie http://mysite.com/admin in Ihrem browser, gibt es eine 404-Seite. Also, gehen Sie zu Ihrem "application/config/routes.php" Datei, und fügen Sie eine benutzerdefinierte route:
Ist es eine gute Idee zu haben, ein admin-Ordner in den Ordner Controller, wobei Sie Zugang zu Ihrem administration z.B. yoursite.com/admin/users.
Alle Ihre administrativen Bedürfnisse werden da sein und alle Methoden geschützt werden, durch die überprüfung von Benutzer-Privilegien, etwa so:
Dann werden alle Controller, die außerhalb der 'admin' Ordner wird - je nach Art der Website - nur für die Anzeige, etc.. keine administrativen Teile.
Idee 2 ist besser.
system/application/controllers/admin
Halten Sie alle Ihre admin-Controller hier.
Hier ist eine umfangreiche Anleitung zu den pro 's und con' s der einzelnen Methoden:
http://philsturgeon.co.uk/news/2009/07/Create-an-Admin-panel-with-CodeIgniter
Je nachdem, was du damit meinst "Admin" Funktionen...in der Regel ist dieser Gedanke als ein 'Edit' - Ansicht.
Und in der Regel verwenden Sie die vorhandenen controller zu dienen, die 'Bearbeiten' - Ansicht ermöglicht dem autorisierten Benutzer, um die änderungen (in deinem Fall den Admin-Benutzer nur).
Sieht aus wie eine persönliche Wahl, ich Liebe es, wenn alles zentralisiert, damit die admin-controller wäre meine Wette.
So, ich würde nicht zu öffnen, bis 5 verschiedene Steuerungen beim ändern von admin-Aufgaben.