CodeIgniter: добавление параметров в URL

Начал мой первый проект CI, и мне просто интересно, как я обрабатываю параметры URL? У меня есть контроллер с именем «город», и я изменил свой mod_rewrite, поэтому localhost / codeigniter использует переписывание в localhost / codeigniter / city. Я хочу добавить название города в конец URL-адреса и использовать сегмент для запроса таблицы.

Поэтому моим примером будет localhost / codeigniter / edinburgh. Я бы взял последний сегмент, а затем создаю sql-запрос. Однако я думаю, что когда я помещал edinburgh в URL CI, я думаю, что я ищу контроллер под названием «edinburgh».

Нужно ли добавлять маршрутизацию или что-то подобное?

Вы действительно можете использовать маршрутизацию для этого.

$ route [': any'] = "controller / method";

Это приведет к перенаправлению ВСЕГО после вашего базового url к указанному контроллеру и методу внутри этого контроллера. Чтобы получить сегменты URL, вы можете использовать вспомогательный URI .

$ This-> load-> помощник ( 'URL'); // сначала загрузим помощника

$ city = $ this-> uri-> сегмент (1);

При доступе к http: // localhost / codeigniter / edinburgh переменная $ city в приведенном выше примере будет edinburgh.

Надеюсь, это поможет!

PS. Вам не требуется mod_rewrite для указания контроллера по умолчанию. Вы можете установить его в config.php в разделе «Маршруты». Укажите город как ваш контроллер по умолчанию, и вы можете избавиться от mod_rewrite.

Да, вы можете использовать маршрут :

$route[':any/'] = "myclass/by_city_method"; 

Но почему вы не используете модуль, называемый (например) городом, чтобы получить классическую схему uri?

 class city extends Controller { public void index($city=false) { if ($city) { } else { } } } 

Изменить: вы даже можете выбрать город, который будет контроллером по умолчанию, в глобальном файле конфигурации.

Другой метод:

route.php:

 $route['city/(:any)'] = "city/city_lookup/$1"; 

city.php

 <?php class City extends Controller { function City() { parent::Controller(); } function city_lookup($id) { echo "$id"; } } 
 $path = "/codeignter/city/viewcity/Edinburg"; 

Это вызовет вызов контроллера City , метод viewcity выполняется с параметром, который имеет значение «Edinburg» !

Вот код для вашего контроллера …

 class city extends Controller { public viewcity($city='') { echo ($city === '') ? "The city you want to view is {$city}!" : "not defined!"; } } 

Аминь 🙂