Контроллеры маршрутизации в подпапках - codeigniter
так как я хочу разделить интерфейс и бэкэнд системы. я создал 2 папки внутри контроллеров как интерфейс и бэкэнд
Ниже представлена структура папки контроллера.
controller
--frontend
---store.php
---processing.php
---profile.php
---authenticate.php
---register.php
--backend
---authenticate.php
---stats.php
---users.php
---property_manage.php
---register.php
Я могу получить доступ к функциям с помощью
frontend/store/add
frontend/store/manage
......
backend/stats/sales
backend/stats/payments
.....
но я хочу снять интерфейс и сегменты бэкэнда с URL.
Я проверил функцию маршрутизации в codeigniter, но, согласно моим знаниям, мне нужно индивидуально указать каждый маршрут. Поскольку у меня около 12 контроллеров, и каждый из них имеет около 10 -15 функций, мне может потребоваться указать каждую функцию на маршрут.
Есть ли другой эффективный способ достижения маршрутизации или любым другим способом? (без использования htaccess)
Ответы
Ответ 1
Сделайте это:
$route['store/(:any)'] = 'frontend/store/$1';
$route['processing/(:any)'] = 'frontend/processing/$1';
$route['profile/(:any)'] = 'frontend/profile/$1';
То же самое для бэкэнд:
$route['backend/(:any)'] = 'backend/authenticate/$1';
Вам не нужно создавать каждое правило в routes.php для каждой функции контроллера, но достаточно одного правила для каждого контроллера, как указано выше.
Маршрутизация URI: Руководство пользователя CodeIgniter
$1
представляют первое выражение, здесь (:any)
- это выражение, вы можете иметь множественное выражение для каждого правила, а выражение представлено как $1
, $2
и т.д. с другой стороны.
Аналогично, (:num)
будет соответствовать сегменту, содержащему только числа, (:any)
будет соответствовать сегменту, содержащему любой символ, (\d+)
будет соответствовать любой цифре, ([a-z]+)
будет соответствовать любому альфа-тексту.
Ответ 2
Вы должны уметь отличать интерфейс от бэкэнда каким-то образом. Возможно, задайте маршрут, который перенаправляет любой uri с "admin" на бэкэнд, и что угодно, без "admin" в интерфейс.
Ответ 3
Для Front-End вы можете добавить это в route.php:
$this->set_directory( "frontend" );
поэтому в URL-адресе браузера нет необходимости включать "frontend"