首页 > 解决方案 > 尽管路由正确,Laravel 资源控制器仍产生 404

问题描述

我创建了一个名为BirdsController. 控制器索引和显示方法正确路由到页面。但是,尽管正确设置了路由和控制器,但 create 方法仍会产生 404 错误。是什么产生了这个错误?

网页.php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\BirdsController;


Route::get('wildlife/birds', [BirdsController::class, 'index'])->name('birds');
Route::get('wildlife/birds/{bird:name}', [BirdsController::class, 'show'])->name('birds.show');
Route::get('wildlife/birds/create', [BirdsController::class, 'create'])->name('birds.create');

鸟类控制器

namespace App\Http\Controllers;

use App\Models\Birds;
use App\Models\User;
use Illuminate\Http\Request;

class BirdsController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $birds = Birds::all();
        return view('wildlife.birds.index',compact('birds'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view('wildlife.birds.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  \App\Models\Birds  $birds
     * @return \Illuminate\Http\Response
     */
    public function show(Birds $bird)
    {
        return view('wildlife.birds.show', compact('bird'));
    }

标签: phplaravel-8

解决方案


为什么不在 web.php 路由文件中使用 Controller 作为资源?

Route::group('prefix' => 'wildlife', function() {

    Route::resource('birds',BirdsController::class);

});

推荐阅读