gpt4 book ai didi

CakePHP 3.x : all routes to the plugin

转载 作者:行者123 更新时间:2023-12-01 15:58:08 26 4
gpt4 key购买 nike

这不是一个真正的问题,我需要确认才能知道我是否理解我正在研究的内容(CakePHP 的路由)。

我有插件 MyPlugin。默认情况下,所有请求都应定向到插件,因此我希望插件名称不要出现在 url 中。

例如:

/pages

应该解析为:

['controller' => 'pages', 'action' => 'index', 'plugin' => 'MyPlugin']

这同样适用于“admin”前缀。

例如:

/admin/pages

应该解析为:

['controller' => 'pages', 'action' => 'index', 'plugin' => 'MyPlugin', 'prefix' => 'admin']

简而言之,您必须想象应用程序(除了 MyPlugin)没有 Controller 。

我研究了routes (特别是 thisthis )现在我想知道这段代码是否正确:

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();
});

最佳答案

是的,没错。我认为你可以做得更短(待测试,但你明白了):

Router::scope('/', ['plugin' => 'MeCms'], function ($routes) {  
$routes->prefix('admin', function ($routes) {
$routes->fallbacks();
});
$routes->fallbacks();
});

编辑:将主页添加到您的管理部分:

Router::scope('/', ['plugin' => 'MeCms'], function ($routes) {  
$routes->prefix('admin', function ($routes) {
$routes->connect('/', ['controller' => 'Pages', 'action' => 'index']);
$routes->fallbacks();
});
$routes->fallbacks();
});

您不需要重复 ['plugin' => 'MeCms']["prefix"=> "admin"] 因为之前已经定义过了.

关于CakePHP 3.x : all routes to the plugin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29398085/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com