|
|||||||
Роутинг в CodeIgniter 2
Время создания: 31.01.2023 09:01
Текстовые метки: php, codeigniter, route, роутинг, перенаправление
Раздел: Компьютер - Программирование - Язык PHP - CodeIgniter
Запись: xintrea/mytetra_syncro/master/base/1675144914q3t3wdb5or/text.html на raw.github.com
|
|||||||
|
|||||||
CodeIgniter User Guide Version 2.1.3 URI роутинг В большинстве случаев используется соответствие один-к-одному между строкой URL и соответствующим методом и классом контроллера. Обычно сегменты URI соответствуют этому шаблону: example.com/class/function/id/ Однако, в некоторых случаях вы можете захотеть переопределить это отношение, чтобы вызывались другие класс/функция, при определенном URL. К примеру, давайте предположим, что вы хотите, чтобы URL соответствовал этому прототипу: example.com/product/1/ example.com/product/2/ example.com/product/3/ example.com/product/4/ Обычно второй сегмент URL зарезервирован за именем функции, но в примере выше он содержит идентификатор продукта. Чтобы решить это, CodeIgniter позволяет вам переназначить обработчик URI. Установка ваших собственных правилПравила роутинга определяются в файле application/config/routes.php. В нем вы найдете массив $route, который позволяет вам определить собственные критерии роутинга. Роуты могут быть определены посредством шаблонов или регулярных выражений ШаблоныОбычные шаблоны выглядят примерно так: $route['product/(:num)'] = "catalog/product_lookup"; В шаблоне ключи массива определяют совпадающий URI, а значения указывают на метод контроллер, который должен быть вызван. В примере выше, если слово "product" найдено в первом сегменте URI, и число во втором, будет загружен контроллер catalog и вызван его метод product_lookup. Вы можете указывать литеральные значения, или использовать два типа шаблонов: (:num) совпадет с сегментом, который содержит только цифры. (:any) совпадет с сегментом, содержащим любой символ. Примечание: Роуты работают в том порядке, в котором они определены. Вышестоящие роуты имеют преимущество над теми, которые определены ниже по коду. ПримерыВот несколько примеров роутинга: $route['journals'] = "blogs"; URL, содержащий слово "journals" в первом параметре, будет перенаправлен в класс "blogs". $route['blog/joe'] = "blogs/users/34"; URL, содержащий сегменты blog/joe, будет перенаправлен в класс "blogs" методу "users". Идентификатор будет установлен в "34". $route['product/(:any)'] = "catalog/product_lookup"; URL, содержащий слово "product" в первом сегменте, и любое содержание во втором, будет перенаправлен в класс "catalog" и функцию "product_lookup". $route['product/(:num)'] = "catalog/product_lookup_by_id/$1"; URL со словом "product" в первом сегменте, и с номером во втором, будет перенаправлен в класс "catalog", и его методу "product_lookup_by_id" будет передана переменная из второго сегмента URI. Важно: не используйте ведущие или завершающие слеши. Регулярные выраженияЕсли вы предпочитаете регулярные выражения, вы можете использовать их для определения роутов. Допустимо любое правильное регулярное выражение, а также обратные ссылки. Примечание: Если вы используете обратные ссылки, вы должны применять синтаксис $ перед обратным слешем. Типичный роут с использованем регулярных выражений может выглядеть так: $route['products/([a-z]+)/(\d+)'] = "$1/id_$2"; В этом примере URI, соответствующий products/shirts/123 вызовет контроллер shirts и функцию id_123. Также вы можете смешивать шаблоны и регулярные выражения. Зарезервированные роутыЕсть два зарезервированных роута: $route['default_controller'] = 'welcome'; Этот роут указывает, какой класс контроллера должен быть загружен, если URI не содержит данных, когда люди загружают корневой URL сайта. В примере выше будет загружен класс welcome. Вы должны всегда определять роут по умолчанию, иначе вместо главной страницы будет выводиться ошибка 404. $route['404_override'] = ''; Этот роут определяет, какой контроллер должен использоваться, если запрашиваемый не найден. Он перепишет страницу 404 по умолчанию. Это не повлияет на функцию show_404(), которая будет загружать файл error_404.php, находящийся в application/errors/error_404.php. Важно: Зарезервированные роуты должны определяться выше по коду относительно определения любого шаблона или регулярного выражения. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|