Codeigniter HMVC und CMS
-
19-09-2019 - |
Frage
Ich bin mit Codeigniter mit der HMVC Modulare Erweiterung und verfügen über einen Back-End-CMS-Bereich für Website-Inhalte zu verwalten. Ich Routing die Basis-URL + "admin" ( http: // localhost / cms / admin ) auf Controller-Methoden mit dem Präfix "admin _".
e.g. function admin_index() {...}
Und hier ist mein Routing:
$route['admin/([a-zA-Z]+)/(:any)'] = "$1/admin_$2"; $route['^admin/(:any)(/)?'] = "$1/admin_index"; $route['^admin(/)?'] = "dashboard/admin_index"; $route['admin/logout'] = "login/admin_logout";
Mit dem HMVC es routet nicht richtig jetzt. Hier ist, was passiert:
URL: http://localhost/cms/admin/faqs Directory: modules/faqs/controllers/faqs - index method -- here is where it breaks -- URL: http://localhost/cms/admin/faqs/categories Directory: modules/faqs/controllers/faqs - categories method (does not exits) Desired: modules/faqs/controllers/categories - index method
Wie kann ich HMVC verwenden, während die "admin" zu pflegen hält der Website?
Lösung
Sie machen das Leben ein bisschen zu heikel von Frontend- und Backend-Funktionen in dem gleichen Controller setzen. Werfen Sie einen Blick auf meinen Artikel über , wie zu erstellen eine Admin-Struktur in CodeIgniter .
Andere Tipps
Ich arbeite an etwas ähnliches, und implementiert ein Swapping wie Sie (dritte Option) tat und es funktionierte gut.
Ich hat versucht, einen Front-Controller zu implementieren, um den Admin-Bereich zu handhaben, und Lauf Module mit HMVC Module :: run () und puffern die Ausgabe, wie ich will, aber dann habe ich ein anderes Problem konfrontiert, werden Sie die URI ändern müssen Systeme von / bis _ oder etwas anderes, da Sie auf „/“ Modul Segmente als Parameter auf dem Controller, weil CI setzt senden Lage sein würden nicht für sie Mechanismus Routing.
Der einzige Weg ist, den Admin-Bereich zu emulieren wie Phil vorgeschlagen, aber es gibt eine andere Möglichkeit, noch haben die Kontrolle über die von jedem implementiert Code mit Ihrem CMS.
Sie könnten CI_Controller (oder MX_Controller falls Sie verwenden HMVC) erstrecken und eine Admin_Controller hinzuzufügen, die Ihre Logik behandelt und steuern, welche Module tun können.
Haben Sie einen Blick auf diese CodeIgniter Basisklassen : trocken halten es