【问题标题】:Route [staff] not defined while it is in laravel?在laravel中未定义路线[员工]?
【发布时间】:2021-04-28 12:00:08
【问题描述】:

路线[人员]未定义。

这是我的 web.php(路线)。

Route::get('/staff', function () {
    return view('staff');
});

Route::resource('/staff', StaffController::class);

这是我的控制器。索引,创建页面在同一页面。

public function index()
{
    $staffs = Staff::all();
    return view('staff', compact('staffs'));
}
public function create()
{
    return view('staff');
}
public function store(Request $request)
{
    $request->validate([
        'name' => 'required',
        'gender' => 'required',
        'salary' => 'required',
    ]);

    $staff = new Staff();
    $staff->name = $request->name;
    $staff->gender = $request->gender;
    $staff->salary = $request->salary;
    $staff->save();

    return redirect()->route('staff')->withSuccess('Done');
}

这是我的staff.blade.php,点击提交后发生错误(路由未定义)。

<form id="myForm" method="post" action="{{ route('staff.store') }}">
                        @csrf
                        <div class="user-box">
                            <input type="text" name="name" required="">
                            <label>Name</label>
                            @error('name')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                            @enderror
                        </div>
                        <div class="user-box">
                            <input type="text" name="gender" required="">
                            <label>Gender</label>
                            @error('gender')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                            @enderror
                        </div>
                        <div class="user-box">
                            <input type="text" name="salary" required="">
                            <label>Salary</label>
                            @error('salary')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                            @enderror
                        </div>
                        <button class="a" id="a" value="submit" name="submit">Submit</button>

                    </form>

【问题讨论】:

  • 你必须将 ->name('staff') 添加到你的 web.php route::get.
  • 您在哪里看到错误?访问特定 URL 时?运行 redirect() 行时?
  • 去掉get路由Route::get('/staff'...会和你的资源路由冲突

标签: laravel laravel-8


【解决方案1】:

没有任何名称路由称为staff,应该是staff.index

return redirect()->route('staff.index')->withSuccess('Done');

Resource Route Name

【讨论】:

    【解决方案2】:

    第一次删除你的get route 全部被resource 覆盖

    Route::resource('/staff', StaffController::class);
    

    此代码生成类似的路由名称

    路线名称

    • 员工索引
    • staff.create
    • staff.store
    • staff.show
    • staff.edit
    • staff.update
    • staff.destroy

    所以在你的代码中你需要这样做

    return redirect()->route('staff.index')->withSuccess('Done');
    

    参考链接https://laravel.com/docs/8.x/controllers#actions-handled-by-resource-controller

    【讨论】:

      猜你喜欢
      • 2018-10-15
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 2016-01-24
      • 2020-05-03
      • 2016-04-02
      • 2014-09-20
      • 2020-07-26
      相关资源
      最近更新 更多