So erhalten Sie den Controllernamen und den Aktionsnamen von diesen URLs. Ich bin CodeIgniter-Neuling. Gibt es eine Hilfsfunktion, um diese Informationen zu erhalten
Da mein Controller einen Unterordner hat, gibt $this->uri->segment(1) den Namen des Controllers möglicherweise falsch zurück. Vielen Dank für Ihre Hilfe, ich benutze $this->router, um die Informationen zu erhalten.
– noname.cs
14. Januar 2010 um 4:32 Uhr
Um das Verzeichnis korrekt zu erhalten, können Sie auch Folgendes verwenden: $this->router->fetch_directory();
– jmserra
8. Oktober 2013 um 16:01 Uhr
Hey, wenn Sie Codeigniter 3 verwenden, dann für Controller: $this->router->class; für Methode: $this->router->method; für Verzeichnis: $this->router->directory; Dokumentation: codeigniter.com/user_guide/installation/…
– Kartalot
23. Mai 2016 um 21:55 Uhr
$this->router->fetch_class(); $this->router->fetch_method(); Es klappt.
– Dinesh Patra
17. März 2017 um 11:55 Uhr
Anstatt URI-Segmente zu verwenden, sollten Sie Folgendes tun:
$this->router->fetch_class(); // class = controller
$this->router->fetch_method();
Auf diese Weise wissen Sie, dass Sie immer die richtigen Werte verwenden, auch wenn Sie sich hinter einer gerouteten URL, in einer Subdomain usw. befinden.
Ich habe gerade herausgefunden, dass Sie mit dieser Methode nicht den richtigen Namen der Klassenmethode erhalten können, wenn Sie eine Ansicht wie aufrufen modules::run('module/controller/action'). Es zeigt nur die Router-Informationen der geladenen Seite. Gibt es eine Möglichkeit, dies zu überwinden?
– Starx
13. Februar 2012 um 7:26 Uhr
Genial! Irgendein Wort darüber, wie sicher das ist? Dh kann das gespooft werden?
– HellaMad
13. März 2013 um 1:14 Uhr
Dies sollte die akzeptierte Antwort sein – oder mit der Abkürzung: $this->router->class
– ChristoKiwi
15. März 2015 um 23:42 Uhr
Nicht, wenn Sie die Routen in routes.php ändern, $this->router gibt die Klasse zurück, in der der Code ausgeführt wird, aber nicht den tatsächlichen Router, der mit der Überschreibung maskiert ist. Beide Antworten sind sehr nützlich, je nachdem, was Sie tun möchten.
– Tibor Szasz
19. Januar 2016 um 11:08 Uhr
Diese Methoden wurden veraltet, verwenden $this->router->class und $this->router->method stattdessen
Mit Eigenschaften CI_Router::$directory, CI_Router::$class und CI_Router::$method öffentlich zu sein und ihre jeweiligen fetch_*() nichts anderes mehr tun, um die Eigenschaften einfach zurückzugeben – es macht keinen Sinn, sie zu behalten.
Dies sind alles interne, undokumentierte Methoden, aber wir haben uns entschieden, sie vorerst zu verwerfen, um für alle Fälle die Abwärtskompatibilität aufrechtzuerhalten. Wenn einige von Ihnen sie verwendet haben, können Sie jetzt stattdessen einfach auf die Eigenschaften zugreifen:
$this -> router -> fetch_module(); //Module Name if you are using HMVC Component
Dies fetch_module() call funktioniert bei mir nicht in CI 2.1.2. Kann es in der Datei /system/router.php nicht finden.
– Tim Petersen
27. August 2013 um 12:53 Uhr
@timpeterson, Es ist nur in der HMVC-Komponente verfügbar, wie in der Antwort angegeben.
– Starx
27. August 2013 um 18:00 Uhr
Aktualisieren
Die Antwort wurde 2015 hinzugefügt und die folgenden Methoden sind jetzt veraltet
$this->router->fetch_class(); in favour of $this->router->class;
$this->router->fetch_method(); in favour of $this->router->method;
Hallo, Sie sollten den folgenden Ansatz verwenden
$this->router->fetch_class(); // class = controller
$this->router->fetch_method(); // action
Zu diesem Zweck, aber um dies zu verwenden, müssen Sie Ihren Haken aus dem verlängern CI_Controller und es funktioniert wie ein Zauber, Sie sollten keine URI-Segmente verwenden
Dies fetch_module() call funktioniert bei mir nicht in CI 2.1.2. Kann es in der Datei /system/router.php nicht finden.
– Tim Petersen
27. August 2013 um 12:53 Uhr
@timpeterson, Es ist nur in der HMVC-Komponente verfügbar, wie in der Antwort angegeben.
– Starx
27. August 2013 um 18:00 Uhr
Monsterm
Wenn Sie $this->uri->segment verwenden und sich die Regeln zum Umschreiben von URLs ändern, geht der Abgleich der Segmentnamen verloren.
13582300cookie-checkCodeIgniter: So erhalten Sie Controller-, Aktions- und URL-Informationenyes