es tut mir leid, dass ich mir die Mühe machen muss, aber ich hoffte, dass mir jemand helfen könnte, mit einem ganz banalen Problem, das ich in CI habe. Ich kann eine Variable über die URL mit den Beispielen von CI senden, z.
http://localhost/project/main/getproduct/24
innerhalb der getproduct () -Methode meines Hauptcontrollers kann ich die Variable 24 ohne Probleme senden.
ich möchte jedoch jetzt zwei Variablen über die URL übergeben, aber ich habe keine Ahnung, wie ich das machen soll oder ob CodeIgniter mir dies erlaubt. Könnte mir bitte jemand zeigen, wie ich 2 Variablen in CI übergeben kann und eine Methode, mit der ich sie abrufen kann:
http://localhost/project/main/getproduct/24/45
und dann in meiner getproduct-Methode:
public function getproduct($productID, $factoryID){
.....
}
aber ich finde, meine Methode kann die erste Variable ohne ein Problem erhalten, aber nicht die zweite Variable. Könnte mich bitte jemand in die richtige Richtung weisen? Vielen Dank im Voraus.
Sie können uri
verwenden, um Werte in Ihrer URL abzurufen
Hier ist ein Beispiel
public function getproduct()
{
$productID = $this->uri->segment(3);
$factoryID = $this->uri->segment(4);
// ProductID will be 25
// Factory ID will be 45
}
Dann können Sie die Werte einfach wie gewünscht verwenden
Die akzeptierte Antwort funktioniert für dieses spezielle Problem, funktioniert jedoch nicht, wenn sich die URL ändert. Um auf mehrere Variablen in Ihrem Controller zuzugreifen, fügen Sie einfach die Funktionsdefinition hinzu.
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
}
}
Referenz: CodeIgniter Benutzerhandbuch
Sie müssen in config/routes.php eine Route festlegen, um die Elemente zu analysieren.
Es sieht aus wie:
$route["getproduct/(:any)/(:num)"]="main/changequestion/$1/$2"
Dann hoffe ich, dass es klappt.
Wenn jemand anderes mit CI3 darauf stößt. In CodeIgniter 3 ist keine spezielle Route erforderlich. Nicht sicher, ob es jetzt auch auf CI2 funktioniert.
Sie können auf diese URI-Segmente mit Parametern wie folgt zugreifen:
public function getproduct($productID, $factoryID){
.....
}
Sie können uri
verwenden, um Werte in Ihrer URL abzurufen http: // localhost/project/main/get_product/12/2
Hier ist ein Beispiel
public function get_product(){
$product_id = $this->uri->segment(3); // Product id will be 12
$factory_id = $this->uri->segment(4); // Factory id will be 23
}
Dann können Sie die Werte einfach nach Belieben verwenden
URI-Segmente an Ihre Methoden übergeben
Wenn Ihr URI mehr als zwei Segmente enthält, werden diese als Parameter an Ihre Methode übergeben.
Angenommen, Sie haben einen URI wie folgt:
example.com/index.php/products/shoes/sandals/123
Ihre Methode wird an den URI-Segmenten 3 und 4 ("Sandalen" und "123") übergeben:
<?php
class Products extends CI_Controller {
public function shoes($sandals, $id)
{
echo $sandals;
echo $id;
}
}
Wichtig !!! Wenn Sie die URI-Routing-Funktion verwenden, werden die an Ihre Methode übergebenen Segmente die weitergeleiteten Segmente.
Siehe diesen Link als Codeigniter Official Guide. Offizieller Codeigniter-Leitfaden.
http://example.com/project/main/getproduct/24/45
Um '45' zu erhalten, kannst du folgendes tun:
$id1 = $this->uri->segment(3);
echo $id1; //output is 45
Lösung dieses Problems ist die Verwendung von _remap () Funktion. Sie müssen diese Funktion nur vor der index () - Funktion hinzufügen
function _remap($method, $args)
{
if (method_exists($this, $method))
{
$this->$method($args);
}
else
{
$this->Index($method, $args);
}
}
Ich hoffe, das löst dein Problem.