首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >某些相关路由上的Laravel 7路由组返回404

某些相关路由上的Laravel 7路由组返回404
EN

Stack Overflow用户
提问于 2020-08-29 02:36:26
回答 3查看 200关注 0票数 0
代码语言:javascript
复制
Route::group(['prefix'=>'cart'], function (){

    Route::get('', 'CartController@index')->name('cart.index');
    Route::get('{id}', 'CartController@create')->name('cart.create')->middleware('auth');
    Route::any('update/{id}/{qty}', 'CartController@update')->name('cart.update')->middleware('auth');
    Route::any('saveorder', 'CartController@store')->name('cart.store')->middleware('auth');
    Route::any('delete/{rowId}', 'CartController@destroy')->name('item.delete')->middleware('auth');
    Route::any('empty', 'CartController@empty')->name('cart.empty')->middleware('auth');

});

一些路径仍然有效,但其中一些路径已损坏并返回404,即使这些路径存在

断开的路由为: item.delete、cart.empty、cart.store

代码语言:javascript
复制
      | auth:api   |
|        | GET|HEAD                               | cart                    | cart.index       | App\Http\Controllers\CartController@index                              | web        |
|        | GET|HEAD|POST|PUT|PATCH|DELETE|OPTIONS | cart/delete/{rowId}     | item.delete      | App\Http\Controllers\CartController@destroy                            | web        |
|        |                                        |                         |                  |                                                                        | auth       |
|        | GET|HEAD|POST|PUT|PATCH|DELETE|OPTIONS | cart/empty              | cart.empty       | App\Http\Controllers\CartController@empty                              | web        |
|        |                                        |                         |                  |                                                                        | auth       |
|        | POST                                   | cart/saveorder          | cart.store       | App\Http\Controllers\CartController@store                              | web        |
|        |                                        |                         |                  |                                                                        | auth       |
|        | PUT                                    | cart/update/{id}/{qty}  | cart.update      | App\Http\Controllers\CartController@update                             | web        |
|        |                                        |                         |                  |                                                                        | auth       |
|        | GET|HEAD                               | cart/{id}               | cart.create      | App\Http\Controllers\CartController@create                             | web        |
|        |                                        |                         |                  |  
EN

回答 3

Stack Overflow用户

发布于 2020-08-29 04:36:16

如果您将GET方法与cart.emptycart.store一起使用,则它们将由cart.create处理,您应该将这些路由放在第一位(顺序很重要),并且最好明确使用路由方法,而不是使用Route::any

代码语言:javascript
复制
Route::prefix('cart')->group(function () {
    Route::get('', 'CartController@index')->name('cart.index');
    Route::any('saveorder', 'CartController@store')->name('cart.store');
    Route::any('empty', 'CartController@empty')->name('cart.empty');
    Route::any('delete/{rowId}', 'CartController@destroy')->name('item.delete');
    Route::any('update/{id}/{qty}', 'CartController@update')->name('cart.update');
    Route::get('{id}', 'CartController@create')->name('cart.create');
});
票数 0
EN

Stack Overflow用户

发布于 2020-08-29 04:48:18

代码语言:javascript
复制
Route::group(['prefix' => 'cart', 'middleware' => ['auth']], function(){
    Route::get('/', 'CartController@index')->name('cart.index');
    Route::get('/{id}', 'CartController@create')->name('cart.create');
    Route::any('/update/{id}/{qty}', 'CartController@update')->name('cart.update');
    Route::any('/saveorder', 'CartController@store')->name('cart.store');
    Route::any('/delete/{rowId}', 'CartController@destroy')->name('item.delete');
    Route::any('/empty', 'CartController@empty')->name('cart.empty');
});
票数 0
EN

Stack Overflow用户

发布于 2020-08-29 15:27:54

代码语言:javascript
复制
Route::prefix('cart')->group(function (){
  Route::middleware(['auth'])->group(function(){
    Route::get('{id}', 'CartController@create')->name('cart.create');
    Route::put('update/{id}/{qty}', 'CartController@update')->name('cart.update');
    Route::post('saveorder', 'CartController@store')->name('cart.store');
    Route::delete('delete/{rowId}', 'CartController@destroy')->name('item.delete');
    Route::post('empty', 'CartController@empty')->name('cart.empty');
  });
  Route::get('/', 'CartController@index')->name('cart.index');
});

有两件事需要考虑。您的cart.index可能与路由下面的URI匹配。为了安全起见,请尽量不要使用Route::any。如https://laravel.com/docs/7.x/routing中所述。正如@Sobir建议的那样,运行php artisan route:list并查看Laravel看到的实际路由列表。

如果某些内容丢失或不明确,您可能需要重新考虑某些路由参数,以避免混淆。或者以不同的方式对它们进行重组。您的路由列表肯定会增加。对你正在构建的东西的未来计划进行预测。

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

https://stackoverflow.com/questions/63639251

复制
相关文章

相似问题

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