Я столкнулся с проблемой маршрутизации Laravel в моем приложении. В частности, я получаю следующую ошибку:
Internal Server Error
Illuminate\Routing\Exceptions\UrlGenerationException
Missing required parameter for [Route: edit_mahasiswa] [URI: mahasiswa/edit/{id}] [Missing parameter: id].
У меня есть маршрут для редактирования объекта Махасисва:
route::group(['middleware' => ['auth:user']], function () {
Route::get('/mahasiswa/edit/{id}', [MahasiswaController::class, 'edit'])->name('edit_mahasiswa');
}
Это мой контроллер
public function edit($id) {
//dd($id);
$mahasiswa = Mahasiswa::find($id);
if ($mahasiswa) {
return view('mahasiswa.edit', compact('mahasiswa'));
} else {
Alert::error('Mahasiswa tidak ditemukan');
return redirect()->route('daftar_mahasiswa')->with('error', 'Mahasiswa tidak ditemukan');
}
}
На мой взгляд, когда я перечисляю сущности Махасисвы, я пытаюсь создать URL-адрес для редактирования сущности:
@foreach ($mahasiswa as $m)
<tr>
<th scope = "row">{{ $m->id }}</th>
<td>{{ $m->nim }}</td>
<td>{{ $m->name }}</td>
<td>{{ $m->email }}</td>
<td>
<a href = "{{ route('edit_mahasiswa', ['id' => $m->id]) }}">
<button class = "btn btn-warning">
<i class = "ri-edit-2-fill"></i>
</button>
</a>
</td>
</tr>
@endforeach
Однако я получаю сообщение об ошибке:
Missing required parameter for [Route: edit_mahasiswa] [URI: mahasiswa/edit/{id}] [Missing parameter: id].
Что я пробовал:
🤔 А знаете ли вы, что...
В Laravel есть множество расширений и библиотек для улучшения функциональности.
Проблема, вероятно, в том, что $m->id
возвращается в null
и передает значение null
в обязательный параметр. Вы можете проверить это, просто передав null
статически и передав целочисленное значение.
<a href = "{{ route('edit_mahasiswa', ['id' => null]) }}">Button</a> //for error
<a href = "{{ route('edit_mahasiswa', ['id' => 1]) }}">Button</a> // for correct results
Вы можете исправить это, убедившись, что $m->id
никогда не является null
, или сделать параметр необязательным с помощью {id?}
.
Route::get('/mahasiswa/edit/{id?}', [MahasiswaController::class, 'edit'])-`>name('edit_mahasiswa');`
Но затем обязательно обработайте нулевой случай в своем контроллере.