douhao2548 2019-01-26 17:53
浏览 96

Laravel 5 - 新的Route ::资源跟随前一个

I just started with Laravel on my project and I face some problems in routes. Currently, I made tutorial resource route:

Route::resource('/tutorials', 'TutorialsController')->parameters(['tutorial' => 'id']);

route:list gives me the following output:

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

Everythings works perfectly, now I would like to add some mini-series to some tutorials, I would like to add a new resource route and leave my route like this:

// 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

At this point I was able to make it creating all routes manually:

// 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']);

As you may notice there is a lot of code here, I would like to ask if someone know if there is some additional option that would simplify this code. I would like to add a second Route::resource and leave it clean, but when I give it a try I got the following output:

// 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
  • 写回答

1条回答 默认 最新

  • doupingpeng7567 2019-01-26 18:06
    关注

    In my understanding to use route resource, the controller must be created as resource controller as well. In my case

       Route::resource('staff/regulatory', 'Regulatory\LicensingController',[
            'names' => 
            [
                 'index'    => 'staff.approval.index', 
                 'show'     => 'staff.approval.show', 
                 'store'    => 'staff.approval.store',   
    
            ]
    ]); 
    

    This is how i use route resource. If you create manually then it has to be as how you did above. Try looking at route groups as well. Correct me if i am wrong TQ

    评论

报告相同问题?

悬赏问题

  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程