Префикс плагина Cakephp не работает - PullRequest
0 голосов
/ 29 июня 2018

Я создаю плагин Cakephp (3.5.14), он работает нормально с указанными ниже маршрутами плагины / табели / конфигурация / routes.php

Router::plugin(
        'Timesheet', ['path' => '/timesheets'], function (RouteBuilder $routes) {
    $routes->setExtensions(['json']);

    $routes->connect('/', ['controller' => 'Timesheets', 'action' => 'index']);
    $routes->connect('/edit', ['controller' => 'Timesheets', 'action' => 'edit']);
    $routes->connect('/add', ['controller' => 'Timesheets', 'action' => 'add']);

    $routes->fallbacks(DashedRoute::class);

согласно документации это я добавил в проект src / config / rout.php

$routes->scope('/backend', function ($routes) {
        $routes->loadPlugin('Timesheet');
    });

Но как-то не работает.

Мой URL: www.xxx.com/backend/timesheets

Ошибка: не удалось найти BackendController.

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

Ошибка: создайте класс BackendController ниже в файле: src \ Controller \ BackendController.php

использовать App \ Controller \ AppController;

класс BackendController расширяет AppController {

}

Трассировка стека:

⟩ Cake\Http\ControllerFactory->missingController
CORE\src\Http\ControllerFactory.php, line 38
⟩ Cake\Http\ControllerFactory->create
CORE\src\Http\ActionDispatcher.php, line 90
⟩ Cake\Http\ActionDispatcher->dispatch
CORE\src\Http\BaseApplication.php, line 108
⟩ Cake\Http\BaseApplication->__invoke
CORE\src\Http\Runner.php, line 65
⟩ Cake\Http\Runner->__invoke
CORE\src\Routing\Middleware\RoutingMiddleware.php, line 104
⟩ Cake\Routing\Middleware\RoutingMiddleware->__invoke
CORE\src\Http\Runner.php, line 65
⟩ Cake\Http\Runner->__invoke
CORE\src\Routing\Middleware\AssetMiddleware.php, line 88
⟩ Cake\Routing\Middleware\AssetMiddleware->__invoke
CORE\src\Http\Runner.php, line 65
⟩ Cake\Http\Runner->__invoke
CORE\src\Error\Middleware\ErrorHandlerMiddleware.php, line 98
⟩ Cake\Error\Middleware\ErrorHandlerMiddleware->__invoke
CORE\src\Http\Runner.php, line 65
⟩ Cake\Http\Runner->__invoke
ROOT\vendor\cakephp\debug_kit\src\Middleware\DebugKitMiddleware.php, line 52
⟩ DebugKit\Middleware\DebugKitMiddleware->__invoke
CORE\src\Http\Runner.php, line 65
⟩ Cake\Http\Runner->__invoke
CORE\src\Http\Runner.php, line 51
⟩ Cake\Http\Runner->run
CORE\src\Http\Server.php, line 81
⟩ Cake\Http\Server->run
ROOT\webroot\index.php, line 40

Заранее спасибо.

1 Ответ

0 голосов
/ 29 июня 2018

Проверьте другие маршруты, которые подключены в вашем приложении. Скорее всего, ранее был подключен маршрут, который перехватывает запрос, возможно, тот, который ищет что-то вроде /:controller/:action (либо явно, либо как запасные маршруты), следовательно, он использует backend часть в качестве контроллера.

Вы можете легко получить список всех подключенных маршрутов через оболочку маршрутов :

bin/cake routes
...