CakePHP v3.x API前缀路由

CakePHP v3.x API前缀路由,cakephp,routes,cakephp-3.0,Cakephp,Routes,Cakephp 3.0,我有休闲路线: Router::scope('/', function (RouteBuilder $routes) { Router::prefix('api', function ($routes) { $routes->extensions(['json', 'xml']); $routes->resources('JobChemicals'); $routes->fallbacks('DashedRoute'); }); Url:/api

我有休闲路线:

Router::scope('/', function (RouteBuilder $routes) {
  Router::prefix('api', function ($routes) {
    $routes->extensions(['json', 'xml']);
    $routes->resources('JobChemicals');
    $routes->fallbacks('DashedRoute'); 
});
Url:/api/job\u chemicals/2.json-WORKS
Url:/api/job chemicals/2.json-非

找不到或无法访问操作JobChemicalsController::2()。为什么?我用的是Dashdulote而不是下划线。有什么想法吗?我知道它很小,但它让我发疯

$routes->fallbacks('DashedRoute')

这只影响备用路由,而不影响对
$routes->resources
的调用

资源路由默认为下划线 正如问题中所指出的那样,这项工作是有效的

同样,资源路由默认为下划线:

默认情况下,多字控制器的URL片段是控制器名称的下划线形式。例如,BlogPostsController的URL片段将是/blog_posts

可以使用“拐点”选项指定替代拐点类型:

Router::scope('/', function ($routes) {
    $routes->resources('BlogPosts', [
        'inflect' => 'dasherize' // Will use ``Inflector::dasherize()``
    ];
});
上述内容将生成类似于:/blog posts/*的URL样式

这种差异的原因是遗留的(在3.0中,下划线是所有内容的默认url屈折变化),但修复方法很简单-只需在资源调用中包含
influct
选项