Pregunta

Tengo estas URL:

Cómo obtener el nombre de controlador, nombre de la acción de estas URL. Estoy CodeIgniter novato. ¿Hay alguna función auxiliar para obtener esta información

Ejemplo:

$params = helper_function( current_url() )

Cuando $params se convierte en algo así como

array (
  'controller' => 'system/settings', 
  'action' => 'edit', 
  '...'=>'...'
)
¿Fue útil?

Solución

Se puede utilizar el URI Clase :

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

También he sido informado de que el siguiente trabajo, pero soy actualmente incapaz de prueba:

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

Otros consejos

En lugar de utilizar los segmentos URI que debe hacer esto:

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

Así, usted sabe que siempre pueda utilizar los valores correctos, incluso si está detrás de una URL enrutado, en un subdominio, etc.

Los métodos están en desuso.

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

Puede acceder a las propiedades en su lugar.

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

CodeIgniter usuario guía

  

métodos URI de enrutamiento fetch_directory (), FETCH_CLASS (), fetch_method ()

     

Con propiedades CI_Router::$directory, CI_Router::$class y   CI_Router::$method siendo pública y sus respectivos fetch_*() sin   ya hacer cualquier otra cosa que acaba de regresar las propiedades - no lo hace   tener sentido para mantenerlos.

     

Estos son todos los métodos internos, sin papeles, pero Decidio   despreciar por ahora con el fin de mantener la compatibilidad con versiones anteriores   por si acaso. Si algunos de ustedes los utilizaron, entonces ahora sólo puede   acceder a las propiedades en su lugar:

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

Otra forma

$this->router->class

Como una adición

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

Actualizar

Se añadió la respuesta fue en 2015 y los métodos siguientes están en desuso ahora

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

Hola debe utilizar el siguiente enfoque

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

para este propósito, pero para usar este necesita extender su gancho de la CI_Controller y funciona como un encanto, no se debe utilizar segmentos URI

Si usando $ this-> uri-> segmento, si las direcciones URL reescritura de las reglas cambian, nombre segmentos juego se perderán.

utilizar este código en cualquier lugar en la clase o bibliotecas

    $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

último segmento de la URL será siempre la acción. Por favor, póngase como esto:

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

// clase fecth la clase en el controlador     $ This-> router-> fetch_method ();

// método

clase controlador no está funcionando ninguna función.

por lo que recomiendo que utilice los siguientes scripts

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];
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top