wake-up-neo.com

Übergeben mehrerer Variablen in URL mithilfe von Codeigniter

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.

10
TotalNewbie

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

20
Chitowns24

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

23
Donovan

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.

8
Alex7

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:

http: // localhost/project/main/getproduct/24/45

public function getproduct($productID, $factoryID){
  .....
}
3
Firze

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

1
Sani Kamal

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.

0

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
0
Faisal

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. 

0
Usama Khalid