【发布时间】:2023-09-27 16:39:01
【问题描述】:
我正在使用 laravel 8 进行编辑操作,为此我使用 php artisan 命令创建了资源控制器,并且创建工作完美,但编辑操作无法正常工作,给出错误为“缺少 [Route:tasks.update 所需的参数” ] [URI:tasks/{task}] [缺少参数:task]'
web.php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\TaskController;
Route::resource('tasks', TaskController::class);
list.blade.php
<table class="table table-bordered">
<thead>
<tr>
<th>Title</th>
<th>Assigned User</th>
<th>Status</th>
<th>Action</th>
</tr>
</thead>
<tbody>
@if(count($tasks)>0)
@foreach($tasks AS $record)
<tr>
<td>{{ $record->title }}</td>
<td>{{ $record->name }}</td>
<td>{{ $record->status }}</td>
<td> <a href="{{ route('tasks.edit', $record->id) }}"> Edit </a> | <a href="{{ route('tasks.delete', $record->id) }}"> Delete </a> </td>
</tr>
@endforeach
@else
<tr><td colspan="3" align="center">No Records Found.</td></tr>
@endif
</tbody>
</table>
edit.blade.php
<form name="" action="{{ route('tasks.update', $record->id) }}" method="POST">
@csrf
@method('PUT')
<div class="form-group">
<label for="title">Title: </label>
<input type="text" name="title" class="form-control" placeholder="Enter Title" value="{{ $record->title }}">
<span class="text-danger">@error('title') {{ $message }} @enderror</span>
</div>
<div class="form-group">
<label for="password">Assign to User: </label>
<select class="form-control" name="assigned_user_id">
<option value="">--Select User--</option>
@foreach($users as $each_user)
<option value="{{ $each_user->id }}" {{ ($each_user->id == $record->assigned_user_id) ? 'selected' : '' }} >{{ $each_user->name }}</option>
@endforeach
</select>
<span class="text-danger">@error('assigned_user_id') {{ $message }} @enderror</span>
</div>
<div class="form-group">
<label for="password">Task Status: </label>
<select class="form-control" name="task_status_id">
<option value="">--Select Status--</option>
@foreach($task_status as $each_status)
<option value="{{ $each_status->id }}" {{ ($each_status->id == $record->task_status_id) ? 'selected' : '' }} >{{ $each_status->status }}</option>
@endforeach
</select>
<span class="text-danger">@error('task_status_id') {{ $message }} @enderror</span>
</div>
<div class="form-group">
<button type="submit" class="btn btn-block btn-primary">Update</button>
</div>
<br>
</form>
TaskController.php
public function edit(Task $id)
{
// echo $id;exit;
$task = Task::find($id);
$users = DB::table('users')->get();
$task_status = DB::table('task_status')->get();
// dd($task);
return view('tasks.edit',['record'=>$task,'users'=>$users, 'task_status'=>$task_status]);
}
public function update(Request $request,Task $id)
{
}
任何帮助,谢谢。
【问题讨论】:
-
您需要通过初始化刀片路由操作中的参数来传递
ID(在这种情况下为任务主键)。 Official documentation on resource routes。您可以使用{{ route('tasks.edit', ['task' => $record->id]}}传递您的参数,更新路由也可以采用同样的方式。 -
也许可以试试checking the routing docs?
标签: php laravel laravel-8 crud