Domanda

Ho questi URL:

Come ottenere il nome del controller e il nome dell'azione da questi URL.Sono un principiante di CodeIgniter.Esistono funzioni di supporto per ottenere queste informazioni

Ex:

$params = helper_function( current_url() )

Dove $params diventa qualcosa di simile

array (
  'controller' => 'system/settings', 
  'action' => 'edit', 
  '...'=>'...'
)
È stato utile?

Soluzione

È possibile utilizzare il URI Classe :

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

Ho anche stato detto che il seguente lavoro, ma sono attualmente in grado di prova:

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

Altri suggerimenti

Invece di usare segmenti URI si dovrebbe fare questo:

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

In questo modo si sa che si sta per utilizzare i valori corretti, anche se ci si trova dietro un URL routing, in un sottodominio, ecc.

I metodi sono obsoleti.

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

È possibile accedere alle proprietà, invece.

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

codeigniter guida utente

  

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

     

Con le proprietà CI_Router::$directory, CI_Router::$class e   CI_Router::$method essere pubblico e il loro rispettivo fetch_*() no   più fare qualsiasi altra cosa per tornare solo le proprietà - non lo fa   senso per tenerli.

     

Questi sono tutti i metodi, senza documenti interni, ma abbiamo scelto di   li deprecate per ora al fine di mantenere la retrocompatibilità   nel caso in cui. Se qualcuno di voi li hanno utilizzato, allora si può ora solo   accedere alle proprietà invece:

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

Un altro modo

$this->router->class

Come aggiunta

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

Aggiorna

La risposta è stata aggiunta è stato nel 2015 e le seguenti metodi sono obsoleti ora

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

Ciao si dovrebbe usare il seguente approccio

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

per questo scopo, ma per utilizzare questo è necessario estendere il vostro gancio dalla CI_Controller e funziona come un fascino, non si dovrebbe usare segmenti URI

Se si utilizza $ this-> uri-> segmento, se gli URL riscrittura regole cambiano, nome segmenti corrispondenza sarà perso.

utilizzare questo codice in qualsiasi classe o librerie

    $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

Ultimo segmento del URL sarà sempre l'azione. Si prega di ottenere in questo modo:

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

// classe fecth la classe controller     $ This-> router-> fetch_method ();

// metodo

classe controller non funziona alcuna funzione.

quindi vi consiglio di utilizzare i seguenti script

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];
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top