Я создаю плагин, который я хочу интегрировать в раздел администрирования моего приложения. Моя структура приложения для секции администратора выглядит следующим образом:CakePHP 3 - Admin Routing to Plugin Not Working
src/Controller/Admin/AdminsController.php
src/Controller/Admin/ProductsController.php
src/Controller/Admin/BlogsController.php
AdminsController.php
выглядит следующим образом:
namespace App\Controller\Admin;
use App\Controller\AppController;
use Cake\Event\Event;
use Cake\Network\Exception\ForbiddenException;
class AdminsController extends AppController{
И мои контроллеры администратора, т.е. BlogsController.php
выглядит следующим образом:
namespace App\Controller\Admin;
use App\Controller\Admin\AdminsController;
class BlogsController extends AdminsController {
Мой плагин имеет FeedbacksController
, который выглядит точно так же, как и контроллер блогов выше, который также использует AdminsController
из приложения: plugin/AkkaFeedback/src/Controller/Admin/FeedbacksController.php
namespace App\Controller\Admin;
use App\Controller\Admin\AdminsController;
class FeedbacksController extends AdminsController {`
Кроме того, в моем плагин у меня есть plugin/AkkaFeedback/src/Controller/FeedbacksController.php
Моего Намерение иметь /admin/feedbacks
точку к этому контроллеру. Возможно ли это в CakePHP? Я пробовал много возможностей без успеха. Вот то, что я пытался так же, как другие, но безуспешно:
Router::prefix('admin', function ($routes) {
$routes->connect('/', ['controller' => 'Dashboards', 'action' => 'index']);
$routes->connect('/feedbacks', ['plugin' => 'AkkaFeedback', 'controller' => 'Feedbacks', 'action' => 'index']);
// I have tried this
//$routes->connect('/feedbacks', ['plugin' => 'AkkaFeedback', 'controller' => 'Feedbacks', 'action' => 'index', 'prefix' => 'admin']); // I have also tried this
// And this without succcess
// /admin/akka_feedback/feedbacks
// $routes->plugin('AkkaFeedback', function ($routes) {
// $routes->connect('/:controller');
// });
$routes->fallbacks('InflectedRoute');
});
Ошибки я получаю: Controller class Feedbacks could not be found.
, но есть класс Отзыв, как в Controller
и Controller/Admin
в плагине.
Не уверен, что еще попробовать. Любые идеи были бы хорошы!
Вот как я сделал это для [me] (https://github.com/dereuromark/cakephp-sandbox/blob/3.0/plugins/Sandbox/config/routes.php). – mark
Спасибо, Марк. Хотелось, чтобы я раньше встретил ваш процесс. Это спасло бы мне несколько часов головной боли. :) –
В дополнение к этим изменениям маршрута мне пришлось внести некоторые изменения в мой файл composer.json. [См. Раздел «Поваренная книга» в разделе «Автозагрузка плагинов»] (https://book.cakephp.org/3.0/en/plugins.html#autoloading-plugin-classes) –