我在laravel中创建对象。我遇到了[路由:employees.update] [URI:employees / {employee}]缺少必需参数的问题。 (查看:C:\ xampp \ htdocs \ jbs \ resources \ views \ employees \ edit.blade.php)到目前为止我尝试过的内容如下。我在下面添加了模型视图控制器
编辑刀片页面
@extends('employees.layout')
@section('content')
<div class="row">
<div class="col-lg-12 margin-tb">
<div class="pull-left">
<h2>Edit Employee</h2>
</div>
<div class="pull-right">
<a class="btn btn-primary" href="{{ route('employees.index') }}"> Back</a>
</div>
</div>
</div>
@if ($errors->any())
<div class="alert alert-danger">
<strong>Whoops!</strong> There were some problems with your input.<br><br>
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<form action="{{ route('employees.update',$employees->id) }}" method="POST">
@csrf
@method('PUT')
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<strong>StudentName:</strong>
<input type="text" name="name" value="{{ $employees->studname }}" class="form-control" placeholder="Name">
</div>
</div>
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<strong>Course</strong>
<input type="text" name="name" value="{{ $employees->course }}" class="form-control" placeholder="course">
</div>
</div>
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<strong>Fee</strong>
<input type="text" name="name" value="{{ $employees->fee }}" class="form-control" placeholder="fee">
</div>
</div>
<div class="col-xs-12 col-sm-12 col-md-12 text-center">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
@endsection
控制器
public function edit(Employee $employees)
{
return view('employees.edit',compact('employees'));
}
public function update(Request $request, Employee $employees)
{
$request->validate([
'studname' => 'required',
'course' => 'required',
'fee' => 'required',
]);
$employees->update($request->all());
return redirect()->route('employees.index')
->with('success','Employee updated successfully');
}
模型
protected $fillable = [
'studname', 'course','fee',
];
}
路线
Route::resource('employees','App\Http\Controllers\EmployeeController');
答案 0 :(得分:0)
您的路线参数是employee
而不是employees
。默认情况下,资源路由的路由参数名称为单数。路线实际上是这样的:
employees/{employee}
因此,在您的Controller的edit
方法中,您使用了错误的参数名称,因此您将获得Employee的新实例,而不是将基于route参数注入实例的隐式路由模型绑定,需要将带有类型提示的参数名称与路由参数名称匹配:
// {employee}
public function edit(Employee $employee)
{
...
return view(...., ['employee' => $employee]);
}
现在,在视图中,您将拥有实际的现有Employee实例,可用于生成路由的URL,而不是没有返回id
的{{1}}的空Employee:
null
路由系统可以从模型实例中获取正确的密钥。
答案 1 :(得分:-1)
您应该传递$ employees-> id作为隐藏的输入字段。
将您的路线设为
Route::post('employee/update', 'YourController@yourFunction');
,在编辑页面中,表单操作应类似于
<form action="{{ route('employees.update'}}" method="POST">
为传递ID设置隐藏的输入字段
<input type="hidden" name="id" value="{{$employees->id}}"></input>
答案 2 :(得分:-1)
您应该像这样将路由名称传递给路由功能
route('route name',parameter1)
示例:
Route::post('employee/update/{id}' ,YourController@update)->name('update_employee');
<form action="{{ route('update_employee',$employees->id) }}" method="POST">
@csrf
...