2015-07-21 8 views
0

Je regarde l'apprentissage CodeIgniter (j'utilise la version 3.0.0), mais j'ai un porblem quand je suis en train de routage avec des paramètresroutage à CodeIgniter ne fonctionne pas

Dans le fichier routes.php J'ai:

$route['admin/orders'] = 'admin_orders/index'; 
$route['admin/orders/(:any)'] = 'admin_orders/index'; 
$route['admin/orders/getAll'] = 'admin_orders/getAll'; 
$route['admin/orders/getLast'] = 'admin_orders/getLast'; 
$route['admin/orders/delete/(:any)'] = 'admin_orders/delete' 

;

En admin_orders.php j'ai:

public function delete(){ 
     $id = $this->uri->segment(4); 
     echo "ok $id"; 
    } 

Et dans la vue:

<a href="'.site_url("admin").'/orders/delete/3'.'" class="btn btn-info">Delete</a> 

Mais quand je presse la Supprimer l'application recharger la page, et si je tente sans/(: any) la fonction charge et montre moi le message et les autres routes fonctionnent

Certainement `mm faire quelque chose de mal, comment je peux charger une fonction avec un paramètre utilisant codeigniter 3?

+0

probablement votre ordre d'utilisation: tout est faux, car cela va probablement correspondre avant le reste. Même si ce n'est pas le cas, les choses devraient être listées dans la dernière plus générale juste pour être sûr, parce que ça marche bien mais ça s'arrêtera quand ça va ok qui correspond, et si c'est général en premier ça n'atteint jamais le spécifique. Juste comme une règle de bonne pratique. C'est pourquoi l'autre vient après le if et ifelse – ArtisticPhoenix

+0

Il y a une note sur leur page de doc qui dit autant https://ellislab.com/codeigniter/user-guide/general/routing.html – ArtisticPhoenix

+0

tks @ArtisiticPhoenix, vous avez résolu mon problème – GaF

Répondre

0

Votre commande d'utilisation de :any est erronée, car elle correspondra probablement avant le reste. Même si ce n'est pas le cas, les choses devraient être listées dans le plus général pour être sûr, parce que le routeur va s'arrêter quand il dira ok qui correspond, et si c'est les règles les plus générales ou génériques en premier, il n'atteindra jamais le spécifique. Tout comme une règle de bonne pratique, les choses devraient être listées les plus spécifiques en premier et les plus génériques en dernier. Voilà pourquoi le reste vient après le si et IfElse dans la logique conditionnelle standard (ce qui est évident), mais dans des cas comme celui-ci, il est facile d'oublier des règles simples comme ça ..

voir aussi https://ellislab.com/codeigniter/user-guide/general/routing.html

les bits importants

(: num) correspond à un segment contenant uniquement des nombres. (: any) correspondra à un segment contenant n'importe quel caractère.

Remarque: Les routes seront exécutées dans l'ordre où elles sont définies. Les routes supérieures auront toujours la priorité sur les routes inférieures.