代码之家  ›  专栏  ›  技术社区  ›  Steve

Laravel 5-新路由::资源遵循前一个

  •  0
  • Steve  · 技术社区  · 7 年前

    我刚开始和拉雷维尔在我的项目,我面临一些问题的路线。目前,我制作了教程资源路径:

    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
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Thayanandan Samiappan Kandiar    7 年前

    根据我的理解,要使用路由资源,控制器也必须创建为资源控制器。对我来说

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

    这就是我如何使用路由资源。如果你手动创建,那么它必须像你上面做的那样。试着看看路线组。如果我错了请纠正我

    推荐文章