Подтвердить что ты не робот

Контроллеры маршрутизации в подпапках - 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)

4b9b3361

Ответ 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"