php - 无法将 $id 参数发送到控制器功能 Laravel 8
问题描述
我正在尝试在我的控制器中使用自定义函数在我的数据库中执行软删除,但我收到以下错误。
函数 App\Http\Controllers\EspecialidadesController::borrarEspecialidad() 的参数太少,在第 54 行的 D:\xampp\htdocs\SistemaHNF\vendor\laravel\framework\src\Illuminate\Routing\Controller.php 中传递了 0预计 1 个
看起来$id
没有达到控制器功能。我将发布控制器、视图和路由的代码。
看法
@extends('layouts.app')
@section('content')
<div class="container">
<h1>Editar Especialidad</h1>
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">{{ __('Register') }}</div>
<div class="card-body">
<form method="post" action="{{ route('especialidades.borrarEspecialidad', $especialidad) }}">
@csrf
@method('PUT')
<div class="form-group row">
<label for="nombre" class="col-md-4 col-form-label text-md-right">{{ __('Nombre') }}</label>
<div class="col-md-6">
<input id="nombre" type="text" readonly class="form-control-plaintext" class="form-control @error('nombre') is-invalid @enderror" name="nombre" value="{{ $especialidad->nombre }}" required autocomplete="nombre" autofocus>
@error('nombre')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row mb-0">
<div class="col-md-6 offset-md-4">
<button type="submit" class="btn btn-danger">
{{ __('Borrar') }}
</button>
<a class=" button btn btn-primary"href="{{route('especialidades.index')}}">Cancelar</a>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
控制器
public function borrarEspecialidad($id)
{
var_dump($id);
$especialidad = Especialidades::findOrFail($id);
$especialidad->estado = false;
if ($especialidad->save()) {
return redirect()->route('especialidades.index');
} else {
return redirect()->route('especialidades.borrar');
}
}
路线
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
Route::get('/especialidades/borrar/{nombre}',[EspecialidadesController::class,'borrar'])->name('especialidades.borrar');
Route::put('/especialidades/delete',[EspecialidadesController::class,'borrarEspecialidad'])->name('especialidades.borrarEspecialidad');
Route::resource('/especialidades', EspecialidadesController::class);
Route::get('/gestionarMedicos', [PersonaController::class,'mostrarMedicos'])->name('personaMostrarMedicos');
Route::get('editarMedico',[PersonaController::class])->name('editarMedicos');
我是 Laravel 的新手,而且英语不是我的主要语言,而且我还没有在互联网上找到我的问题的答案。
解决方案
对于路线试试这个
Route::post('/especialidades/delete',[EspecialidadesController::class,'borrarEspecialidad'])->name('especialidades.borrarEspecialidad');
在你的刀片
<form method="POST" action="{{ route('especialidades.borrarEspecialidad') }}">
@csrf
<input name="id" value="{{$yourModel->id ?? 0}}" hidden>
</form>
控制器
public function borrarEspecialidad(Request $request)
{
$id = $request['id'];
$especialidad = Especialidades::findOrFail($id);
$especialidad->estado = false;
if ($especialidad->save()) {
return redirect()->route('especialidades.index');
} else {
return redirect()->route('especialidades.borrar');
}
}
推荐阅读
- python - pip install TFX 耗时太长
- python - 如何检索 Discord 用户的简历?
- node.js - 如何避免在 DocuSign 连接消息中发送文档?
- ios - 相机条码扫描适用于 iPhone,但不适用于 iPad
- python - 为什么导入我在 python 中的任何库都会不断出现错误?
- flutter - 使用 ThemeData.dark() 或 ThemeData.light() 时更改 Flutter 中的字体系列
- javascript - 如何在不同的 html 组件之间使用 JavaScript?
- reactjs - 组件定义 - 缺少显示名称错误
- r - r 中 Light 的 kappa 的自举置信区间
- excel - 如果为空 vba,将第一项添加到我的列表框