我正在使用CakePHP 3.4。我正在开发一个插件,我们称之为MyPlugin
。
MyPlugin有2个路由前缀,让我们调用一个/books
,另一个/authors
。其中每一个都有一组与路线相关的控制器。
在应用程序中,我希望能够在routes文件中声明前缀/admin/books
指向插件中的books路由,而/authors
指向/authors
。我应该怎么做呢?
Router::scope('/', function (RouteBuilder $routes) {
$routes->prefix('admin/books', ['plugin' => 'MyPlugin'], function ($routes) {
$routes->fallbacks();
});
$routes->prefix('authors', ['plugin' => 'MyPlugin'], function ($routes) {
$routes->fallbacks();
});
$routes->fallbacks(DashedRoute::class);
});
Router::plugin(
'MyPlugin',
['path' => '/'],
function (RouteBuilder $routes) {
$routes->prefix('/books', function (RouteBuilder $routes) {
// controller actions...
});
$routes->prefix('/authors', function (RouteBuilder $routes) {
//controller actions...
});
}
);
编辑以响应@ndm:
我面临的问题是,插件需要能够让某些控制器控制' /'没有插件前缀的SEO目的,但需要保护一些路由,因为它们是管理路由。