Frage

Ich habe diese URLs:

Wie Controller-Namen zu erhalten, Aktionsnamen aus dieser URLs. Ich bin CodeIgniter Neuling. Gibt es irgendwelche Hilfsfunktion diese Informationen zu erhalten

Beispiel:

$params = helper_function( current_url() )

Wo $params so etwas wie

wird
array (
  'controller' => 'system/settings', 
  'action' => 'edit', 
  '...'=>'...'
)
War es hilfreich?

Lösung

könnten Sie verwenden die URI Klasse :

$this->uri->segment(n); // n=1 for controller, n=2 for method, etc

Ich habe auch gesagt, dass die folgende Arbeit, aber ich bin derzeit nicht in der Lage zu testen:

$this->router->fetch_class();
$this->router->fetch_method();

Andere Tipps

Anstelle der Verwendung von URI-Segmente sollten Sie dies tun:

$this->router->fetch_class(); // class = controller
$this->router->fetch_method();

Auf diese Weise können Sie wissen, sind immer die richtigen Werte, auch wenn Sie hinter einer gerouteten URL sind, in einer Sub-Domain, etc.

Die Methoden sind veraltet.

$this->router->fetch_class();
$this->router->fetch_method();

Sie können stattdessen die Eigenschaften zugreifen zu können.

$this->router->class;
$this->router->method;

Siehe codeigniter Bedienungsanleitung

  

URI Routing Methoden fetch_directory (), fetch_class (), fetch_method ()

     

Mit Eigenschaften CI_Router::$directory, CI_Router::$class und   CI_Router::$method ist öffentlich und ihre jeweiligen fetch_*() nein   etwas anderes zu tun mehr nur die Eigenschaften zurückkehren - es funktioniert nicht   Sinn macht, sie zu halten.

     

Das sind alle internen, nicht dokumentierte Methoden, aber wir haben sich dafür entschieden,   verbitten sie jetzt, um Rückwärtskompatibilität zu halten   nur für den Fall. Wenn einige von Ihnen diesen in Anspruch genommen haben, dann können Sie jetzt einfach   Zugriff auf die Eigenschaften statt:

$this->router->directory;
$this->router->class;
$this->router->method;

Eine andere Möglichkeit,

$this->router->class

Als Zusatz

$this -> router -> fetch_module(); //Module Name if you are using HMVC Component

Aktualisieren

Die Antwort hinzugefügt wurde im Jahr 2015 war und die folgenden Methoden sind veraltet jetzt

$this->router->fetch_class();  in favour of  $this->router->class; 
$this->router->fetch_method(); in favour of  $this->router->method;

Hallo, sollten Sie den folgenden Ansatz verwenden

$this->router->fetch_class(); // class = controller
$this->router->fetch_method(); // action

für diesen Zweck aber für die Verwendung dieser Sie benötigen Haken von der CI_Controller zu erweitern und es funktioniert wie ein Charme, sollten Sie nicht uri Segmente verwenden

Wenn Sie $ mit this-> uri-> Segment, wenn Urls Regeln ändern Umschreiben, werden Segmente name matching verloren.

Verwenden Sie diesen Code überall in der Klasse oder Bibliotheken

    $current_url =& get_instance(); //  get a reference to CodeIgniter
    $current_url->router->fetch_class(); // for Class name or controller
    $current_url->router->fetch_method(); // for method name

Zuletzt Segment der URL wird immer die Aktion sein. Bitte setzen Sie sich wie folgt aus:

$this->uri->segment('last_segment');
$this->router->fetch_class(); 

// fecth Klasse der Klasse in der Steuerung     $ This-> Router-> fetch_method ();

// Methode

Controller-Klasse ist keine Funktionen arbeiten.

so empfehle ich Ihnen die folgenden Skripte verwenden

global $argv;

if(is_array($argv)){
    $action = $argv[1];
    $method = $argv[2];
}else{
    $request_uri = $_SERVER['REQUEST_URI'];
    $pattern = "/.*?\/index\.php\/(.*?)\/(.*?)$/";
    preg_match($pattern, $request_uri, $params);
    $action = $params[1];
    $method = $params[2];
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top