我感到非常困惑,但是我希望这是一个非常简单的错误。
访问/admin/service
时,抛出此异常:
缺少[Route:admin.service.toggle.isFeatured] [URI:admin / service / toggle / isFeatured / {service} / {status}]所需的参数。 (查看:C:\ xampp \ htdocs \ cms \ resources \ views \ admin \ service \ index.blade.php)
控制器: AdminServiceController.php
public function store(Request $request)
{
$data = $this->_validate($request);
$data['creator_id'] = auth()->user()->id;
Services::create($data);
return redirect(route("admin.service.index"))->withSuccess("Die neue Leistung wurde hinzugefügt.");
}
public function toggleIsFeatured(Services $service,$status)
{
$service->update(["is_featured" => !$status]);
redirect(back()->withSuccess('Status wurde erfolgreich geändert.'));
}
public function toggleIsActive(Services $service,$status)
{
$service->update(["is_active" => !$status]);
redirect(back()->withSuccess('Status wurde erfolgreich geändert.'));
}
private function _validate($request) {
$rules = [
'title' => 'required|unique:services',
'description' => 'required|min:100',
];
return $this->validate($request, $rules);
}
视图: index.blade.php
<a href="{{route('admin.service.toggle.isFeatured',[$service->id,$service->isFeatured])}}" class="btn btn-info btn-circle btn-sm"> @if($service->is_featured)<i class="fas fa-fw fa-star text-warning"></i> @else <i class="far fa-fw fa-star"></i> @endif</a>
<a href="{{route('admin.service.toggle.isActive',[$service->id,$service->isActive])}}" class="btn btn-info btn-circle btn-sm"><i class="fas fa-fw fa-circle @if($service->is_active) text-success @else text-danger @endif "></i></a>
路由: web.php
Route::prefix('admin')->group(function ()
{
Route::name('admin.')->group(function () {
Route::middleware('auth')->group(function ()
{
Route::get('/', function ()
{
return view('admin');
});
Route::resource('service', 'App\Http\Controllers\AdminServiceController');
Route::get('service/toggle/isFeatured/{service}/{status}', [App\Http\Controllers\AdminServiceController::class, 'toggleIsFeatured'])->name('service.toggle.isFeatured');
Route::get('service/toggle/isActive/{service}/{status}', [App\Http\Controllers\AdminServiceController::class, 'toggleIsActive'])->name('service.toggle.isActive');
});
});
});
答案 0 :(得分:0)
您可能应该将参数作为关联数组传递给route
帮助器。尽管您尝试传递的实际问题是null
。
考虑到您的查询要更新“具有功能”,使用字段is_featured
试图在模型isFeatured
上访问该属性时使用了错误的属性,该属性不存在,因此返回{ {1}}。
null
我将此强制布尔值转换为整数,以便在该段route('admin.service.toggle.isFeatured', [
'service' => $service->id,
'status' => (int) $service->is_featured,
])
或0
上实际放入URL。否则1
将为空字符串false
。
对于您的“活跃”内容,这是同样的问题。在模型上使用错误的属性。