php - Laravel 5 - 新的 Route::resource 遵循前一个
问题描述
我刚开始在我的项目中使用 Laravel,我在路线上遇到了一些问题。目前,我制作了教程资源路线:
Route::resource('/tutorials', 'TutorialsController')->parameters(['tutorial' => 'id']);
route:list
给我以下输出:
POST | tutorials
GET|HEAD | tutorials
GET|HEAD | tutorials/create
DELETE | tutorials/{tutorial}
PUT|PATCH | tutorials/{tutorial}
GET|HEAD | tutorials/{tutorial}
GET|HEAD | tutorials/{tutorial}/edit
一切都完美无缺,现在我想在一些教程中添加一些迷你系列,我想添加一个新的资源路线并像这样离开我的路线:
// Tutorials
POST | tutorials
GET|HEAD | tutorials
GET|HEAD | tutorials/create
DELETE | tutorials/{tutorial}
PUT|PATCH | tutorials/{tutorial}
GET|HEAD | tutorials/{tutorial}
GET|HEAD | tutorials/{tutorial}/edit
// Mini-series of tutorials
POST | tutorials/{tutorial}
GET|HEAD | tutorials/{tutorial}/create
GET|HEAD | tutorials/{tutorial}/{mini-serie}
DELETE | tutorials/{tutorial}/{mini-serie}
PUT|PATCH | tutorials/{tutorial}/{mini-serie}
GET|HEAD | tutorials/{tutorial}/{mini-serie}/edit
在这一点上,我可以让它手动创建所有路由:
// Mini-series routes:
Route::post('tutorials/{tutorial}', 'SeriesController@store')->name('serie.store');
Route::get('tutorials/{tutorial}/create', 'SeriesController@create')->name('serie.create');
Route::get('tutorials/{tutorial}/{mini-serie}', 'SeriesController@show')->name('serie.show');
Route::delete('tutorials/{tutorial}/{mini-serie}', 'SeriesController@destroy')->name('serie.destroy');
Route::patch('tutorials/{tutorial}/{mini-serie}', 'SeriesController@update')->name('serie.update');
Route::get('tutorials/{tutorial}/{mini-serie}/edit', 'SeriesController@edit')->name('serie.edit');
// Tutorials routes:
Route::resource('/tutorials', 'TutorialsController')->parameters(['tutorial' => 'id']);
您可能会注意到这里有很多代码,我想问一下是否有人知道是否有一些额外的选项可以简化此代码。我想添加第二个Route::resource
并让它保持干净,但是当我尝试它时,我得到了以下输出:
// Route::resource('/tutorials/{tutorial}', 'SeriesController')->parameters(['tutorial' => 'id']);
POST | tutorials/{tutorial}
GET|HEAD | tutorials/{tutorial}
GET|HEAD | tutorials/{tutorial}/create
GET|HEAD | tutorials/{tutorial}/{{tutorial}}
DELETE | tutorials/{tutorial}/{{tutorial}}
PUT|PATCH | tutorials/{tutorial}/{{tutorial}}
GET|HEAD | tutorials/{tutorial}/{{tutorial}}/edit
解决方案
根据我的理解,使用路由资源,控制器也必须创建为资源控制器。就我而言
Route::resource('staff/regulatory', 'Regulatory\LicensingController',[
'names' =>
[
'index' => 'staff.approval.index',
'show' => 'staff.approval.show',
'store' => 'staff.approval.store',
]
]);
这就是我使用路由资源的方式。如果您手动创建,那么它必须像上面那样。尝试查看路线组。如果我错了请纠正我 TQ
推荐阅读
- excel - VBA - .DataLabels.NumberFormat - “对象不支持此属性或方法”错误
- machine-learning - 如果 GD 的初始化权重是鞍点会发生什么?
- c# - 在现有的 DataTable c# 中添加新值
- pandas - 如何将列表列表拆分为单独的列
- css - 项目是我的组件没有以统一的方式调度
- google-contacts-api - AuthenticationManager.GetExternalLoginInfoAsync() 在谷歌的情况下返回 null
- vb.net - 使用子查询在 DataRepeater 上标记数据绑定
- python - 使用 python flask sqlalchemy orm 实现交叉连接时的完整性错误
- elasticsearch - 多词不精确词的 Elasticsearch 匹配查询
- bash - Bash Shell 文件将 .sass 和 .scss 转换为 css