2010-11-30 5 views
2

Veuillez m'excuser s'il s'agit d'une question incroyablement stupide, étant donné que je suis nouveau à CodeIgniter.Multiplier les segments d'URL pour indexer la fonction avec CodeIgniter

J'ai un contrôleur pour mon système de vérification appelé Vérifier. Je voudrais pouvoir l'utiliser quelque chose comme site.com/verify/123/abcd, mais je veux seulement utiliser la fonction d'index, donc les deux segments d'URL doivent y aller.

Je suis sûr que cela peut être fait avec le routage d'URL en quelque sorte, mais je ne peux pas comprendre comment passer les deux segments d'URL en fonction de l'index de vérifier ..

Répondre

0

Vous aurez soit besoin de modifier les routes ou écrire une règle htaccess, cependant je n'ai pas compris pourquoi vous voulez limiter à la fonction d'index.

7

Quelque chose comme ce routes.php devrait faire le travail:

$ route [ 'vérifier/(: any)/(: any)'] = "vérifier/index/1 $/2 $";

+1

C'est exactement ce que je cherchais - merci, fred – ptrn

1

Je suis assez sûr que vous pouvez simplement passer une méthode de contrôleur dans plusieurs arguments CodeIgniter sans modifier les routes ou .htaccess sauf si j'ai mal compris le problème.

function index($arg_one, $arg_two) 
{ 

} 

$ arg_one représentant le 123 et $ arg_two représentant l'abcd dans votre exemple d'URI.

+0

Cela nécessiterait toujours que l'URL soit site.com/verify/index/123/abcd – ErJab

+0

Vrai, mais cela répond à la question de l'OP comme cela a été libellé. –

0

Si vous ne souhaitez pas utiliser de routes pour une raison quelconque, vous pouvez ajouter cette fonction au contrôleur en question.

public function _remap($method_in, $params = array()) { 
    $method = 'process_'.$method_in; 
    if (method_exists($this, $method)) { 
     return call_user_func_array(array($this, $method), $params); 
    } 
    array_unshift($params, $method_in); 
    $this->index($params); 
} 

Fondamentalement, il fait la même chose que le comportement par défaut dans CI, sauf au lieu d'envoyer un 404 sur la « méthode cant find », il envoie la méthode unfound appelle à l'index.

Vous auriez besoin de modifier votre fonction d'index pour prendre un tableau comme premier argument. OU si vous savez que vous ne voulez jamais 2 arguments, vous pouvez changer les 2 dernières lignes à

$this->index($method_in, $params[0]); 

Bien sûr les deux solutions échouent dans quelqu'un utilise un argument qui est le même comme méthode dans votre contrôleur.

Questions connexes