2010-05-01 10 views
2

Je suis en train de passer des paramètres à un contrôle CodeIgniter, mais je suis obtenir page 404 not found erreur, je ne comprends pas, je l'ai fait ce que le guide dit: http://codeigniter.com/user_guide/general/controllers.html#passinguriCodeIgniter: Page introuvable lors de la transmission de paramètres à un contrôleur?

Quand je supprime les params dans la fonction d'index et d'accéder à tout le tout contrôleur fonctionne très bien, mais je ne peux pas passer une valeur à elle ...

Voici le code de la façon dont je suis en train d'envoyer un param:

http://mysite/123

<?php 
class Main extends Controller { 

    function index($username) { 

     echo $username; 

    } 

} 
?> 

Comment puis-je obtenir plus d'informations concernant cette erreur de codeigniter?

Merci.

Répondre

10

Avec cette URL, CodeIgniter ne peut pas comprendre si vous voulez passer 123 à la méthode index ou si vous demandez la méthode 123 sans paramètre. Vous devez nommer explicitement la méthode par défaut si vous avez besoin de lui passer certains paramètres.

http://mysite/index/123 
+0

Y at-il de toute façon de le contourner, et faire comprendre que je l'envoyer à l'index seulement? Je vous remercie. – thedp

+1

Si vous avez seulement la méthode 'index' dans ce contrôleur, vous pouvez configurer la réécriture via le routage de codeigniter; Si vous avez d'autres méthodes, comment pouvez-vous dire si un segment est un nom de méthode ou un argument pour l'index? –

+0

Je passe seulement des paramètres comme ceci quand le contrôleur a seulement la fonction d'index. – thedp

5

Option 1 - Rempap ​​l'appel de fonction dans votre contrôleur

Si votre contrôleur contient une fonction nommée _remap(), il sera toujours se dit peu importe ce que votre URI contient. Il remplace le comportement normal dans lequel l'URI détermine la fonction est appelée, ce qui vous permet de définir vos propres règles de routage de fonction. http://codeigniter.com/user_guide/general/controllers.html#remapping

Option 2 - Utiliser un itinéraire personnalisé.

http://codeigniter.com/user_guide/general/routing.html

+0

OK, mais comment faire face au fait que codeigniter me demande de spécifier le nom du contrôleur, comme ceci: http: // mysite/main/index/123 'main' est défini comme mon contrôleur par défaut dans le répertoire, Pourquoi dois-je le spécifier? – thedp