CodeIgniter-Standardcontroller in einem Unterverzeichnis funktioniert nicht

8

Mein default_controller in der Routen-Konfiguration ist auf "home.php" eingestellt.

Ich habe ein Unterverzeichnis für meine Controller, nennen wir es "Ordner". Also, wenn ich Ссылка besuche, sollte der Standard-Controller "folder / home.php" richtig heißen?

Aber aus irgendeinem Grund funktioniert das nicht, ich bekomme einen 404. Besuch Ссылка oder Ссылка funktioniert wie erwartet. Darüber hinaus arbeitet der Standardcontroller im Stammverzeichnis ( Ссылка lädt home.php).

Irgendwelche Ideen, hat das jemand anderes erfahren? Ich kann mich nicht damit herumschlagen - es scheint ein CI-Problem zu sein, aber ich kann niemanden finden, der dasselbe Problem hat.

Die Dokumentation, so wie ich sie zumindest verstehe, legt nahe, dass dies gut funktionieren sollte: Ссылка

Wenn Sie den Standard-Controller auf "folder / home.php" setzen, funktioniert Ссылка wie erwartet. Abgesehen davon, dass der Standard-Controller einfach "home.php" sein soll - egal ob im Root oder in einem Unterverzeichnis, home.php innerhalb dieses Verzeichnisses sollte geladen werden, wie in der Dokumentation vorgeschlagen.

Prost

    
Mike 30.06.2011, 01:16
quelle

5 Antworten

22

Für jeden Unterordner in Ihrem Controller-Ordner müssen Sie einen Standard-Controller in routes.php angeben. Der eingebaute $route['default_controller'] funktioniert nicht für Unterordner.

Beispiel: Um den Standard-Controller für Ihren folder -Unterordner auf home zu setzen, fügen Sie Folgendes zu Ihrer /application/config/routes.php -Datei hinzu:

%Vor%

was bedeutet, dass http://mysite.com/folder/ dasselbe ist wie http://mysite.com/folder/home als URL.

    
Yasser Souri 30.06.2011, 09:36
quelle
7

Sie können den System-Router gemäß den Anforderungen erweitern,

  1. Erstelle My_Router.php in application/core/ Verzeichnis

/ *  * Um diese Lizenzüberschrift zu ändern, wählen Sie Lizenzüberschriften in den Projekteigenschaften.  * Um diese Vorlagendatei zu ändern, wählen Sie Extras | Vorlagen  * und öffne die Vorlage im Editor.  * /

%Vor%

und überschreiben _set_default_controller() von benutzerdefinierten Methode, es funktioniert von Unterverzeichnis-Controller sowie Root-Verzeichnis-Controller.

Und in application/config/routes.php

Wenn Sie einen Unterverzeichnis-Standard-Controller benötigen, dann

%Vor%
  • admin - Ordner
  • Admins - Controller
  • Login - Methode

Wenn Sie einen Standard-Controller für das Stammverzeichnis benötigen,

%Vor%
  • Willkommen - Kontrolleur
  • Index - Methode

nicht sicher, dass es in allen Versionen funktioniert, aber in CI3.0.6 getestet

    
Girish 26.06.2016 08:16
quelle
4

Wenn du flexibel bleiben willst, musst du alles nach dem Startordner weitergeben (in application/config/config.php ):

%Vor%     
movAX13h 07.08.2012 14:45
quelle
2

Mit der Standardroute wird CI mitgeteilt, welche Controller-Klasse geladen werden soll, wenn der URI keine Daten enthält.

%Vor%

Also, wenn ich

lade %Vor%

Der beste Controller wird geladen.

auch wenn ich

lade %Vor%

oder

%Vor%

Der beste Controller wird geladen.

    
Vamsi 30.06.2011 03:51
quelle
0

MEINE ORDNERSTRUKTUR

%Vor%

In config / routes.php

%Vor%

In controllern / homeIndex.php

%Vor%

Standardmäßig wird homeIndex geladen und von homeIndex rufe ich die Funktion frontend / home / action auf.

    
Jauhar xlr 16.05.2017 05:04
quelle

Tags und Links