#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:
- Оставьте пространство имен по умолчанию пустым.
При сопоставлении контроллера с маршрутом маршрутизатор добавит значение пространства имен по умолчанию в переднюю часть контроллера, указанную в маршруте. По умолчанию это значение пусто, что позволяет каждому маршруту указывать контроллер с полным пространством имен:
$routes->setDefaultNamespace('');
- Предоставьте полное пространство имен для контроллера по умолчанию.
$routes->setDefaultController('AppControllersFrontendHome');
- Настройте свои маршруты в соответствии с объявленными 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 , можете ли вы перейти на главную страницу с моими изменениями в предоставленном ответе?