2010-08-26 4 views
0

J'ai activé l'utilisation de chaînes de requête en définissant la variable de config "enable_query_strings" = TRUE.CodeIgniter: transmission des paramètres de la méthode lors de l'utilisation de "enable_query_strings"

Je comprends que, pour invoquer la méthode X de la classe Y, mon URL ressemblera à ceci:

http://localhost/ci_sample/index.php?c=Y&m=X 

Cependant, si ma signature de la fonction X est

function X($param1, $param2) {...} 

comment devrait ma chaîne de requête ressemble à afin de passer deux paramètres à X()?

(Btw, j'ai décidé d'utiliser cette approche, parce que je ne pouvais pas trouver un article/forum sur mod_rewrite pour supprimer index.php qui fonctionnerait sur ma machine.J'utilise XAMPP sur une plate-forme Windows)

Cordialement,

Erwin

Répondre

2

Il semble que si vous voulez utiliser "enable_query_strings" = TRUE, vous ne pouvez pas passer des paramètres à fonction X().

C'est ce qui est dit dans le user guide

S'il vous plaît noter: Si vous utilisez des chaînes de requête, vous devrez construire vos propres URL, plutôt que d'utiliser les aides d'URL (et d'autres aides qui génèrent des URL, comme certains des assistants de formulaire) car ils sont conçus pour fonctionner avec des URL basées sur des segments.

Pour contourner ce problème que vous auriez à faire:

http://localhost/ci_sample/index.php?c=Y&m=X&param1=bla&param2=foo 

function X() 
{ 
    $param1 = $this->input->get('param1'); 
    $param2 = $this->input->get('param2'); 
} 
0

Vous ne devez pas utiliser les chaînes de requête juste parce que vous ne pouvez pas supprimer index.php de l'URL, vous pouvez utilisez des URL comme ceci: example.com/index.php/controller/method/param1/param2. Si vous activez les chaînes de requête dans config.php et que vous définissez uri_protocol sur "PATH_INFO", vous pouvez utiliser les deux. Comme ceci: example.com/index.php/controller/method/param1/param2/?param3=wellhellothere

Votre problème avec le fonctionnement de mod_rewrite est probablement lié au fait que vous exécutez CI dans un sous-répertoire. RewriteBase /ci_sample/ directement après RewriteEngine On devrait faire l'affaire. :)

Questions connexes