【问题标题】:Laravel Routing - 404Laravel 路由 - 404
【发布时间】:2020-11-10 22:56:36
【问题描述】:

我尝试了不同的路线,但我在展示、编辑、存储时遇到了 404。

Auth::routes();

Route::get('/', 'IndexController@index')->name('index')->middleware('user');
Route::get('/user/profile', 'HomeController@index')->name('user')->middleware('user');
Route::get('/{product}/show', 'IndexController@show')->name('product')->middleware('user');

Route::prefix('cart')->group(function () {
    Route::get('/', 'IndexController@cart')->name('cart')->middleware('auth');
    Route::get('/{product}/add', 'IndexController@cartAdd')->name('cartAdd')->middleware('auth');
});

Route::prefix('dashboard')->group(function () {
    Route::get('', 'AdminController@index')->name('admin')->middleware('admin');
    Route::get('products', 'ProductController@index')->name('productIndex')->middleware('admin');
    Route::get('products/create', 'ProductController@create')->name('productCreate')->middleware('admin');
    Route::get('products/{product}', 'ProductController@show')->name('productShow')->middleware('admin');
    Route::put('products/{product}', 'ProductController@update')->name('productUpdate')->middleware('admin');
    
    Route::post('products', 'ProductController@store')->name('productStore')->middleware('admin');
    Route::get('products/{product}/edit', 'ProductController@edit')->name('productEdit')->middleware('admin');
    Route::post('products/{product}', 'ProductController@destroy')->name('productDestroy')->middleware('admin');
});

我正在尝试通过重新安排来修复路线,但到目前为止没有任何运气。

【问题讨论】:

  • 另外,cartadd 和 userprofile 也得到 404
  • 似乎我通过控制器更改它来修复它。从 Product $product 我将其更改为 $id 以查找特定项目并且它可以工作。

标签: laravel routes


【解决方案1】:
Route::get('/{product}/show', 'IndexController@show')->name('product')->middleware('user');

在最后移动这条路线。顺便说一句,在没有任何前缀的路由中使用动态值并不是最好的方法。也许你可以在它前面加上一些静态的东西。

在测试之前运行php artisan optimize,重新配置缓存和路由。

【讨论】:

  • 尝试移动它,但在 ProductController@show - ProductController@edit - 和 ProductController@store 上仍然得到 404。我尝试了 php artisan optimze 但它给出了另一个错误
  • 错误说明了什么?如果你不能缓存你的路线和你的缓存,那么这是一个应该修复的事情。
  • 你定义中间件给用户和管理员吗?如果不定义,把所有中间件改成middleware('auth');
  • 无法为序列化准备路由 [api/user]。使用闭包。
  • 您还必须将它们的别名与 Kernel.php 中的关联类链接起来。关于错误删除您在路由中的逻辑并使用控制器。
【解决方案2】:

好像是因为这里的路由键名

   public function getRouteKeyName()
    {
        return 'prod_name';
    }

删除后所有路由都恢复正常了。

【讨论】:

    猜你喜欢
    • 2021-04-12
    • 1970-01-01
    • 2018-01-15
    • 2012-12-19
    • 2021-01-31
    • 2013-12-26
    • 2019-03-31
    • 2014-12-21
    • 2020-03-26
    相关资源
    最近更新 更多