Передача нескольких переменных в URL с помощью codeigniter

жаль беспокоить, но я надеялся, что кто-то сможет помочь мне с довольно мирской проблемой, которую я испытываю в CI. Я могу отправить переменную через URL, используя примеры CI, например:

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

в методе getproduct () моего основного контроллера я могу получить переданную переменную 24 без проблем.

однако теперь я хочу передать две переменные через URL-адрес, но я понятия не имею, как это сделать или же CodeIgniter позволит мне это сделать. может кто-нибудь, пожалуйста, покажите мне, как передать 2 переменные в CI и метод, который может их восстановить. Я попытался:

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

и затем в моем методе getproduct:

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

но я нахожу, что мой метод может получить первую переменную без проблемы, но не вторую переменную. Может ли кто-нибудь указать мне в правильном направлении, пожалуйста. Спасибо заранее.

Вы можете использовать uri для извлечения значений в вашем URL-адресе

Вот пример

 public function getproduct() { $productID = $this->uri->segment(3); $factoryID = $this->uri->segment(4); // ProductID will be 25 // Factory ID will be 45 } 

Тогда вы можете просто использовать значения, как вам угодно

Принятый ответ будет работать для этой конкретной проблемы, но не будет работать, если URL-адрес изменится. Чтобы получить доступ к нескольким переменным в контроллере, просто добавьте определение функции.

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 } } 

Ссылка: Руководство пользователя CodeIgniter

Вы должны установить маршрут в config / routes.php для анализа элементов.

Это выглядит как:

  $route["getproduct/(:any)/(:num)"]="main/changequestion/$1/$2" 

Тогда я надеюсь, что это сработает.

Если кто-то еще сталкивается с этим, используя CI3. В CodeIgniter 3 нет специального маршрута. Не уверен, что он также работает на CI2.

Вы можете получить доступ к этим сегментам URI, используя такие параметры:

HTTP: // локальный / проект / главная / getproduct / 24/45

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

http://example.com/project/main/getproduct/24/45

Чтобы получить «45», вы можете сделать это:

  $id1 = $this->uri->segment(3); echo $id1; //output is 45 

Передача сегментов URI вашим методам

Если ваш URI содержит более двух сегментов, они будут переданы вашему методу в качестве параметров.

Например, допустим, у вас есть URI:

 example.com/index.php/products/shoes/sandals/123 

Ваш метод будет передан сегментам URI 3 и 4 («сандалии» и «123»):

 <?php class Products extends CI_Controller { public function shoes($sandals, $id) { echo $sandals; echo $id; } } 

Важный!!! Если вы используете функцию маршрутизации URI, сегменты, переданные вашему методу, будут перенаправлены.

См. Эту ссылку в качестве официального руководства Codeigniter. Официальное руководство Codeigniter.