Это не настоящий вопрос, мне нужно подтверждение, чтобы знать, понимаю ли я то, что изучаю (маршруты CakePHP).
У меня есть плагин MyPlugin
. По умолчанию все запросы должны быть направлены на плагин, поэтому я хочу, чтобы имя плагина не отображалось в URL-адресе.
Например:
/pages
должно быть решено как:
['controller' => 'pages', 'action' => 'index', 'plugin' => 'MyPlugin']
То же самое должно относиться к префиксу «admin».
Например:
/admin/pages
должно быть решено как:
['controller' => 'pages', 'action' => 'index', 'plugin' => 'MyPlugin', 'prefix' => 'admin']
Короче говоря, вы должны представить, как будто приложение (так, кроме MyPlugin
) не имеет контроллера.
Я изучил маршруты (особенно это и это), и теперь я хотел бы знать, правильный ли этот код:
Router::defaultRouteClass('InflectedRoute');
Router::prefix('admin', function ($routes) {
$routes->plugin('MeCms', ['path' => '/'], function ($routes) {
$routes->fallbacks();
});
});
Router::scope('/', ['plugin' => 'MeCms'], function ($routes) {
$routes->fallbacks();
});
Судя по моим тестам, это работает. Но так как маршруты сильно изменились по сравнению с CakePHP 2.x, я хотел бы получить подтверждение того, что вы поняли.
Спасибо.
РЕДАКТИРОВАТЬ
Благодаря PGBI этот код должен быть окончательным:
Router::scope('/', ['plugin' => 'MeCms'], function ($routes) {
Router::connect('/admin', ['controller' => 'Pages', 'action' => 'index', 'plugin' => 'MeCms', 'prefix' => 'admin']);
$routes->prefix('admin', function ($routes) {
$routes->fallbacks();
});
$routes->fallbacks();
});