Начал мой первый проект 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!"; } }
Аминь 🙂