我有一条流浪路线:
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
选项。