Codeigniter-4 Не удается перенаправить маршрут URL-адреса с пробелом имен по умолчанию

#php #codeigniter #codeigniter-4

Вопрос:

URL, который я хочу сделать;

Целевая страница по умолчанию : http://localhost/Ci/tr

URL-адрес, по которому я хочу перейти на страницу администратора : http://localhost/Ci/tr/panel или http://localhost/Ci/panel

Route.php

 $routes->setDefaultNamespace('AppControllers');
$routes->setDefaultController('Home');
$routes->setDefaultMethod('index');
$routes->setTranslateURIDashes(false);
$routes->set404Override();
$routes->setAutoRoute(true);

$routes->group('{locale}', ['namespace' => 'AppControllersFrontend'], function($routes)
{
    $routes->get('/', 'Home::index' );
});
$routes->group('panel', ['namespace' => 'AppControllersBackend'], function($routes)
{
    $routes->get('/', 'Home::index' );
});
 

Каталоги файлов контроллера:
app/Controllers/Frontend/Home.php
app/Controllers/Backend/Home.php

App.php язык по умолчанию public $defaultLocale = 'tr';

Я не могу попасть на главную страницу таким образом. Когда я изменяю пространство имен по умолчанию, я не могу перейти на другие страницы. Что мне делать?

введите описание изображения здесь

Комментарии:

1. Что вы подразумеваете под главной страницей ?

2. Я обновил содержимое и добавил картинку. На самом деле, я не мог настроить маршрут в соответствии с этой структурой, потому что я использую локализацию.

Ответ №1:

  1. Оставьте пространство имен по умолчанию пустым.

При сопоставлении контроллера с маршрутом маршрутизатор добавит значение пространства имен по умолчанию в переднюю часть контроллера, указанную в маршруте. По умолчанию это значение пусто, что позволяет каждому маршруту указывать контроллер с полным пространством имен:

$routes->setDefaultNamespace('');

  1. Предоставьте полное пространство имен для контроллера по умолчанию.

$routes->setDefaultController('AppControllersFrontendHome');

  1. Настройте свои маршруты в соответствии с объявленными URL-адресами.
 
$routes->get('Ci/panel', 'AppControllersBackendHome::index');

$routes->group('Ci/{locale}/panel', ['namespace' => 'AppControllersBackend'], function($routes)
{
    $routes->get('', 'Home::index' );
});

$routes->group('Ci/{locale}', ['namespace' => 'AppControllersFrontend'], function($routes)
{
    $routes->get('', 'Home::index' );
});
 

Комментарии:

1. Я не мог найти, что написать в местах » ci » для маршрута

2. @IOst , что вы подразумеваете под местами «ci» ?

3. $routes->get('Ci/panel',....

4. @IOst , тебе не нужно ничего писать. Я уже предоставил фактические маршруты, соответствующие вашим желаемым URL-адресам, в своем ответе.

5. @IOst , можете ли вы перейти на главную страницу с моими изменениями в предоставленном ответе?