Laravel 9路由问题return404 NOT FOUND

Laravel 9 Route problem return 404 NOT FOUND

我正在尝试渲染视图,但我总是得到 notfoud 404 我不知道如何解决这个问题,如果有人能帮助我,我将不胜感激。 欢迎任何帮助。 提前致谢。 每个人都有一个愉快的星期一。

CommunityPostController -> 代码 ->

public function creategif(Community $community)
{
    return view('posts.creategif', compact('community'));
}

网络路由

Route::get('/', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
Route::get('u/{id}', [App\Http\Controllers\HomeController::class, 'user'])->name('user.view');

Auth::routes(['verify' => true]);


Route::group(['middleware' =>['auth', 'verified']], function (){

    Route::resource('communities', \App\Http\Controllers\CommunityController::class);
    Route::resource('communities.posts', \App\Http\Controllers\CommunityPostController::class);
    Route::resource('posts.comments', \App\Http\Controllers\PostCommentController::class);
    Route::get('communities/{community}/posts/creategif', [\App\Http\Controllers\CommunityPostController::class, 'creategif']);


    Route::get('posts/{post_id}/vote/{vote}', [\App\Http\Controllers\CommunityPostController::class, 'vote'])->name('post.vote');
});

查看文件结构

根据您的路线顺序和您post编辑的图像可能存在冲突。如您所见,您拥有路线资源,在这种情况下,这种冲突可能会根据路线顺序发生,而您的 laravel 实际上是在尝试获取 post 而不是加载 creategif 路线.

在这种情况下,每次您尝试访问 creategif 路由时,您的应用程序实际上是在尝试加载基于 'communities.posts' 路由的 post。

因此,根据您的路线顺序中的冲突,这可以正常工作,并且创建或与 'communities.posts' 相关的任何其他路线应该可以正常工作,但在 other-hand creategifURL 可能被识别为与 'communities.posts' 资源相关的路由。

将你的路线移到顶部,或者在这种情况下就在 'communities.posts' 路线上方,不要忘记清除路线缓存。

Route::group(['middleware' =>['auth', 'verified']], function (){

    Route::get('communities/{community}/posts/creategif', [\App\Http\Controllers\CommunityPostController::class, 'creategif']);
    Route::resource('communities', \App\Http\Controllers\CommunityController::class);
    Route::resource('communities.posts', \App\Http\Controllers\CommunityPostController::class);
    Route::resource('posts.comments', \App\Http\Controllers\PostCommentController::class);


    Route::get('posts/{post_id}/vote/{vote}', [\App\Http\Controllers\CommunityPostController::class, 'vote'])->name('post.vote');
});