簡體   English   中英

缺少路由所需的參數 (Laravel 8)

[英]Missing required parameters for Route (Laravel 8)

我在創建或編輯表單時收到此錯誤,您知道它是來自這些視圖之一還是來自 Controller?

[Route: forms.show] [URI: forms/{form}] [Missing parameter: form] 缺少必需的參數

感謝您的幫助,這是我在這里的第一篇文章。

代碼如下:

CONTROLLER 表單控制器:

public function create()
    {
        if (!Auth::check()) {
            return redirect('login');
        }
        return view('forms.create');
    }

public function show($id)
    {
        return view('forms.consult', ['forms' => Forms::findOrFail($id)]);
    }

public function update(StoreFormsRequest $request, Forms $forms)
    {
        if (!Auth::check()) {
            return redirect('login');
        }
        $request->validated();
        $forms->update($request->input());
        return redirect()->route('forms.show', ['forms' => $forms]);
    }

public function edit($id)
    {
        if (!Auth::check()) {
            return redirect('login');
        }
        return view('forms.edit', ['forms' => Forms::findOrFail($id)]);
    }

查看 create.blade.php:

<form action="{{ url('forms') }}" method="POST">
  @csrf
...
<button class="btn btn-primary mb-1 mr-1" type="submit"> Ajouter </button>
</form>

編輯刀片 php:

<form action="{{ url('forms', [$forms->id]) }}" method="POST">
  @csrf
  @method('PUT')
...
<button class="btn btn-primary mb-1 mr-1" type="submit"> Modifier </button>
</form>

路線

web.php :
Route::get('/', [FormsController::class, 'index']);
Route::resource('forms', FormsController::class);

Auth::routes();

Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
Route::get('/home', [App\Http\Controllers\FormsController::class, 'index'])->name('home');

問題是您的控制器傳遞了一個名為forms而不是form的參數。 但是您的路線正在排除form參數。

改變這個:

return redirect()->route('forms.show', ['forms' => $forms]);

對此:

return redirect()->route('forms.show', ['form' => $forms]);

確保您將“表單”參數傳遞給路由。 在視圖中使用輔助方法,例如

{{ route('forms.show', ['form' => 1]) }}

默認情況下,Route::resource 將根據資源名稱的“單數化”版本為資源路由創建路由參數。

您需要傳遞資源的單數名稱,即 controller FormsController 的單數名稱應該作為表單而不是forms 傳遞

https://laravel.com/docs/8.x/controllers#restful-naming-resource-route-parameters

我在我的項目中遇到了同樣的問題,我通過了 controller 的單數名稱並且它有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM