首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel 5-新的Route::resource遵循前一个路由

Laravel 5-新的Route::resource遵循前一个路由
EN

Stack Overflow用户
提问于 2019-01-27 01:53:44
回答 1查看 25关注 0票数 0

我刚开始在我的项目中使用Laravel,我在路由中遇到了一些问题。目前,我做了教程资源路由:

代码语言:javascript
复制
Route::resource('/tutorials', 'TutorialsController')->parameters(['tutorial' => 'id']);

route:list给出了以下输出:

代码语言:javascript
复制
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

每件事都很完美,现在我想在一些教程中添加一些迷你系列,我想添加一个新的资源路由,并像这样离开我的路由:

代码语言:javascript
复制
// 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

在这一点上,我能够手动创建所有路由:

代码语言:javascript
复制
// 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并将其保留为空,但当我尝试它时,我得到了以下输出:

代码语言:javascript
复制
// 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
EN

回答 1

Stack Overflow用户

发布于 2019-01-27 02:06:29

在我看来,要使用路由资源,控制器也必须被创建为资源控制器。在我的情况下

代码语言:javascript
复制
   Route::resource('staff/regulatory', 'Regulatory\LicensingController',[
        'names' => 
        [
             'index'    => 'staff.approval.index', 
             'show'     => 'staff.approval.show', 
             'store'    => 'staff.approval.store',   

        ]
]); 

这就是我使用路由资源的方式。如果你手动创建,那么它必须像你上面做的那样。也可以尝试查看路由组。如果我的TQ错误,请纠正我

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54381083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档