CakePHP v3.x API prefixed routes



我有一条流浪路线:

Router::scope('/', function (RouteBuilder $routes) {
  Router::prefix('api', function ($routes) {
    $routes->extensions(['json', 'xml']);
    $routes->resources('JobChemicals');
    $routes->fallbacks('DashedRoute'); 
});

url:/pi/job_chemicals/2.json-工作
url:/pi/job-chemicals/2.json-不

Action JobChemicalScontroller :: 2()找不到或无法访问。为什么?!我正在使用未强调的dashdroute。有任何想法吗?我知道这是很小的想法,但这会让我发疯。

$routes->fallbacks('DashedRoute');

这仅影响 shallback 路由,而不是呼叫$routes->resources

资源默认为下划线

正如问题中指出的那样,强调的URL工作。

在文档中也指出,资源路由默认为下划线:

默认情况下,多词的控制器的URL片段是控制器名称的强调形式。例如,blogpostscontroller的URL片段为/blog_posts。

您可以使用拐点选项指定替代拐点:

Router::scope('/', function ($routes) {
    $routes->resources('BlogPosts', [
        'inflect' => 'dasherize' // Will use ``Inflector::dasherize()``
    ];
});

以上将生成以下样式的URL:/blog-posts/*

这种差异的原因是遗产(以3.0下列为默认的URL函数),但是修复程序很简单 - 只需在资源调用中包含inflect选项。

最新更新