Я пытаюсь преобразовать cakephp 2.x в 3.x. Я использовал правила Router::connect()
, но я пытаюсь преобразовать их в объемную версию.Cakephp 3 маршрутизация с параметром языка
Что касается правила маршрутизации myold, в config/routes.php
Я добавил это.
Router::defaultRouteClass('Route');
Router::scope('/', function ($routes) {
$routes->connect('/:language/:controller/:action/*', ['language' => 'ar|de|en|fr']);
$routes->connect('/:language/:controller', ['action' => 'index', 'language' => 'ar|de|en|fr']);
$routes->connect('/:language', ['controller' => 'Mydefault', 'action' => 'index', 'language' => 'ar|de|en|fr']);
$routes->redirect('/gohere/*', ['controller' => 'Mycontroller', 'action' => 'myaction'], ['persist' => array('username')]);
$routes->connect('/', ['controller' => 'Mydefault', 'action' => 'index']);
$routes->fallbacks('InflectedRoute');
});
- Но это терпит неудачу в
example.com/en/works
. Я получаю эту ошибку:Error: worksController could not be found.
Потому что мой файл контроллераWorksController.php
.
Содержит ли имя контроллера часть под предлогом казеина cakephp 3? http://book.cakephp.org/3.0/en/intro/conventions.html#controller-conventions
- Также
example.com/foo/bar
дает эту ошибку:Error: barController could not be found.
. Ноfoo
является контроллером иbar
является действием.
Как я могу исправить эту проблему маршрутизации?
Редактировать:
Изменение Route::defaultRouteClass('Route')
до Route::defaultRouteClass('InflectedRoute')
Решение проблемы 1. Но проблема 2 существует.
Там должна быть строка 'Route :: defaultRouteClass («Маршрут») 'вверху ваших маршрутов.php. Измените его на 'Route :: defaultRouteClass ('InflectedRoute')'. – ADmad
Эта фиксированная ошибка 1. Но существует ошибка 2. Когда я вхожу в 'example.com/foo/bar', cakephp ищет barController. – trante