问题:缺少 [Route: ] 所需的参数
Issue with: Missing required parameters for [Route: ]
我非常困惑,但我认为这是我的一个非常简单的错误。
访问/admin/service
时抛出异常:
Missing required parameters for [Route: admin.service.toggle.isFeatured] [URI: admin/service/toggle/isFeatured/{service}/{status}]. (View: 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');
});
});
});
您可能应该将参数作为关联数组传递给 route
助手。虽然真正的问题是你试图通过的是 null
.
考虑到您更新“特色”的查询正在使用字段 is_featured
您在模型 isFeatured
上尝试访问此字段时使用了错误的属性,该字段不存在,因此returns null
.
route('admin.service.toggle.isFeatured', [
'service' => $service->id,
'status' => (int) $service->is_featured,
])
我将潜在的布尔值转换为一个整数,因此在 0
或 1
的 URL 中会实际放入一些东西。否则 false
将是一个空字符串,''
.
对于您的“处于活动状态”的内容,这也是同样的问题。在模型上使用了错误的属性。
我非常困惑,但我认为这是我的一个非常简单的错误。
访问/admin/service
时抛出异常:
Missing required parameters for [Route: admin.service.toggle.isFeatured] [URI: admin/service/toggle/isFeatured/{service}/{status}]. (View: 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');
});
});
});
您可能应该将参数作为关联数组传递给 route
助手。虽然真正的问题是你试图通过的是 null
.
考虑到您更新“特色”的查询正在使用字段 is_featured
您在模型 isFeatured
上尝试访问此字段时使用了错误的属性,该字段不存在,因此returns null
.
route('admin.service.toggle.isFeatured', [
'service' => $service->id,
'status' => (int) $service->is_featured,
])
我将潜在的布尔值转换为一个整数,因此在 0
或 1
的 URL 中会实际放入一些东西。否则 false
将是一个空字符串,''
.
对于您的“处于活动状态”的内容,这也是同样的问题。在模型上使用了错误的属性。