désolé de vous déranger mais j'espérais que quelqu'un pourrait m'aider avec un problème assez banal que je rencontrais au sein de CI. Je peux envoyer une variable via l'URL en utilisant des exemples de CI, par exemple:
http://localhost/project/main/getproduct/24
dans la méthode getproduct () de mon contrôleur principal, je peux obtenir la variable envoyée 24, sans problème.
cependant, je souhaite maintenant transmettre deux variables via l'URL, mais je ne sais pas comment faire cela ni si CodeIgniter me le permet. Quelqu'un pourrait-il me montrer comment passer 2 variables dans CI et une méthode permettant de les récupérer? J'ai essayé:
http://localhost/project/main/getproduct/24/45
puis dans ma méthode getproduct:
public function getproduct($productID, $factoryID){
.....
}
mais je trouve que ma méthode peut obtenir la première variable sans problème, mais pas la deuxième. Quelqu'un pourrait-il m'indiquer dans la bonne direction s'il vous plaît. Merci d'avance.
Vous pouvez utiliser uri
pour récupérer des valeurs dans votre URL
Voici un exemple
public function getproduct()
{
$productID = $this->uri->segment(3);
$factoryID = $this->uri->segment(4);
// ProductID will be 25
// Factory ID will be 45
}
Ensuite, vous pouvez simplement utiliser les valeurs à votre guise
La réponse acceptée fonctionnera pour ce problème particulier, mais ne fonctionnera pas si l’URL change un jour. Pour accéder à plusieurs variables de votre contrôleur, ajoutez simplement à la définition de la fonction.
http://localhost/project/main/getproduct/24/45
class Main extends CI_Controller {
public function getproduct($productID = 0, $factoryID = 0)
{
// ProductID will be 25
// Factory ID will be 45
}
}
Référence: Guide de l'utilisateur CodeIgniter
Vous devez définir un itinéraire dans config/routes.php pour analyser les éléments.
Ça ressemble à:
$route["getproduct/(:any)/(:num)"]="main/changequestion/$1/$2"
Alors j'espère que ça va marcher.
Si quelqu'un d'autre se heurte à cela avec CI3. Dans CodeIgniter 3, aucun itinéraire spécial n’est nécessaire. Pas sûr si cela fonctionne aussi sur CI2 maintenant.
Vous pouvez accéder à ces segments d'URI en utilisant des paramètres comme celui-ci:
public function getproduct($productID, $factoryID){
.....
}
Passer des segments d'URI à vos méthodes
Si votre URI contient plus de deux segments, ils seront transmis à votre méthode en tant que paramètres.
Par exemple, disons que vous avez un URI comme celui-ci:
example.com/index.php/products/shoes/sandals/123
Votre méthode sera transmise aux segments 3 et 4 de l’URI («sandales» et «123»):
<?php
class Products extends CI_Controller {
public function shoes($sandals, $id)
{
echo $sandals;
echo $id;
}
}
Important !!! Si vous utilisez la fonctionnalité de routage URI, les segments transmis à votre méthode seront ceux qui sont redirigés.
Référez-vous à ce lien en tant que Guide officiel de Codeigniter. Codeigniter Guide officiel.
http://example.com/project/main/getproduct/24/45
Pour obtenir «45», vous pouvez faire ceci:
$id1 = $this->uri->segment(3);
echo $id1; //output is 45
La solution de ce problème utilise de _remap () une fonction. Vous devez juste ajouter cette fonction avant la fonction index ()
function _remap($method, $args)
{
if (method_exists($this, $method))
{
$this->$method($args);
}
else
{
$this->Index($method, $args);
}
}
J'espère que cela résoudra votre problème.