1

我正在尝试设置一个基本的 Laravel CRUD 应用程序,但我在为每个操作设置页面时遇到了困难。

当我访问路线case/create时,它​​会打开显示页面

路线/web.php

use App\Http\Controllers\HospitalCase as HospitalCase;

Route::controller(HospitalCase::class)->group(function() {
    Route::get('/cases','index')->middleware('auth')->name('cases');
    Route::get('/case/{id}','show')->middleware('auth');
    Route::get('/case/create','create')->middleware('auth');
    Route::post('/case/create','store')->middleware('auth');
    Route::get('/case/edit/{$id}','edit')->middleware('auth');
    Route::post('/case/edit/{$id}','update')->middleware('auth');
    Route::get('/case/delete/{$id}','destroy')->middleware('auth');
});

HospitalCase.php 控制器

class HospitalCase extends Controller
{
    function index()
    {
        echo 'index';
    }

    function create()
    {
        echo 'create';
    }

    function show($id)
    {
        echo 'show';
    }

    function store()
    {
        // validation rules
    }

    function edit($id)
    {
        return view('case/edit');
    }

    function update($id)
    {
    }

    function destroy($id)
    {
    }
}

这是我在浏览器上看到的:

我一直试图解决这个问题好几个小时,但我想不出我做错了什么。

PS:auth 中间件使用的是 laravel 微风(未修改)

4

2 回答 2

2

它显示显示路线的原因是因为您定义了

Route::get('/case/{id}','show')->middleware('auth');

因此,在它之前,它匹配case/createshow('create')

之后尝试定义路线。

Route::get('/case/create','create')->middleware('auth');
Route::post('/case/create','store')->middleware('auth');
Route::get('/case/{id}','show')->middleware('auth');
于 2022-02-22T21:54:08.550 回答
1

只是想重申@TimLewis 的建议,我认为你需要把这条路线:

Route::get('/case/create','create')->middleware('auth');

在这条路线之上:

Route::get('/case/{id}','show')->middleware('auth');

但是你可以尝试使用 Laravel 的路由资源,这样你就不需要写出所有的路由 -

use App\Http\Controllers\HospitalCaseController;

Route::resource('case', HospitalCaseController::class);
于 2022-02-22T22:05:11.327 回答