CodeIgniter, несколько возможных сегментов в одном маршруте - PullRequest
2 голосов
/ 01 сентября 2011

Хорошо, возможно, этот заголовок немного сбивает с толку.Я хотел бы перехватить любую информацию, если она есть, после первого сегмента URI, если этот сегмент является чем-то конкретным, и переслать его на другой контроллер.Вот мой файл маршрутов:

$route['default_controller'] = "main";
$route['404_override'] = '';
$route['testroute'] = "main";

Итак, что это делает сейчас, если я попал на mydomain.com/testroute, он показывает мне страницу по умолчанию, что и должно быть.Тем не менее, я хотел бы, чтобы я пошел на mydomain.com/testroute/testmethod/, где testmethod - это метод в главном контроллере, и я бы хотел, чтобы он также его пересылал.Поэтому я бы хотел, чтобы он направлялся к основному контроллеру независимо от того, есть ли еще сегменты после тестового маршрута, но если они есть, они должны передаваться как вызовы методов основного контроллера.

Ответы [ 2 ]

3 голосов
/ 01 сентября 2011

Просто перехватите данный параметр и передайте его контроллеру, например. как это:

$route['testroute/(:any)'] = "main/$1";

(:any) фактически перехватывает любой тип строки. Есть и другие селекторы. Больше на эту тему можно найти здесь .

Редактировать (ответить на ваш комментарий):

Если вы хотите общий маршрут к методу index () вашего основного контроллера, просто добавьте оба маршрута:

$route['testroute'] = "main";
$route['testroute/(:any)'] = "main/$1";
0 голосов
/ 01 сентября 2011

Э-э, что?Вот как контроллеры CodeIgniter уже работают.Покажите нам код?Что с этим не работает?

Вы настроили перезапись URL в файле .htaccess, чтобы вам не нужно было /index.php/testroute в URL?

Откройте .htaccess и попробуйтеэтот код, если вы еще не переписали это:

RewriteEngine on
RewriteCond $1 !^(index\.php|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

Если вы не настроили переписывание, то без него ^ работать не будет, но вы можете получить доступ как mydomain.com/path/to/ci/index.php/testroute/testmethod

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...