J'ai ces URLs:
Comment obtenir le nom du contrôleur, le nom de l'action à partir de ces URL? Je suis débutant CodeIgniter. Existe-t-il une fonction d'aide pour obtenir cette information?
Ex:
$params = helper_function( current_url() )
Où $params
devient quelque chose comme
array (
'controller' => 'system/settings',
'action' => 'edit',
'...'=>'...'
)
Vous pouvez utiliser la classe URI :
$this->uri->segment(n); // n=1 for controller, n=2 for method, etc
On m'a également dit que les travaux suivants, mais je suis actuellement incapable de tester:
$this->router->fetch_class();
$this->router->fetch_method();
Au lieu d'utiliser des segments d'URI, procédez comme suit:
$this->router->fetch_class(); // class = controller
$this->router->fetch_method();
De cette façon, vous savez que vous utilisez toujours les valeurs correctes même si vous êtes derrière une URL routée, dans un sous-domaine, etc.
Les méthodes sont obsolètes.
$this->router->fetch_class();
$this->router->fetch_method();
Vous pouvez accéder aux propriétés à la place.
$this->router->class;
$this->router->method;
Voir Guide de l'utilisateur de codeigniter
Méthodes de routage URI fetch_directory (), fetch_class (), fetch_method ()
Avec les propriétés
CI_Router::$directory
,CI_Router::$class
etCI_Router::$method
étant public et leurfetch_*()
no plus faire autre chose que de renvoyer les propriétés - cela ne se fait pas logique de les garder.Ce sont toutes des méthodes internes non documentées, mais nous avons opté pour les déconseiller pour le moment afin de maintenir une compatibilité ascendante Au cas où. Si certains d'entre vous les ont utilisés, vous pouvez maintenant simplement accéder aux propriétés à la place:
$this->router->directory; $this->router->class; $this->router->method;
Autrement
$this->router->class
En plus
$this -> router -> fetch_module(); //Module Name if you are using HMVC Component
Mettre à jour
La réponse a été ajoutée en 2015 et les méthodes suivantes sont obsolètes maintenant
$this->router->fetch_class(); in favour of $this->router->class;
$this->router->fetch_method(); in favour of $this->router->method;
Bonjour, vous devriez utiliser l'approche suivante
$this->router->fetch_class(); // class = controller
$this->router->fetch_method(); // action
à cette fin, mais pour utiliser cela, vous devez étendre votre crochet à partir du CI_Controller
et cela fonctionne comme un charme, vous ne devriez pas utiliser de segments uri
Utilisez ce code n'importe où dans la classe ou les bibliothèques
$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
Si vous utilisez $ this-> uri-> segment, si les règles de réécriture d'URL changent, la correspondance de nom de segment sera perdue.
Le dernier segment de l'URL sera toujours l'action. S'il vous plaît obtenir comme ça:
$this->uri->segment('last_segment');