Laravel 拉威尔5.5Controller@destroy迪元';t注入模型
我有以下销毁方法的资源控制器:Laravel 拉威尔5.5Controller@destroy迪元';t注入模型,laravel,dependency-injection,laravel-5.5,Laravel,Dependency Injection,Laravel 5.5,我有以下销毁方法的资源控制器: public function destroy(ClinicImage $clinicImage) { $clinicImage->delete(); return redirect()->back()->with('success', 'Изображение удалено'); } 此外,我还有以下几行网格: <td> <div class="btn-group btn-group">
public function destroy(ClinicImage $clinicImage)
{
$clinicImage->delete();
return redirect()->back()->with('success', 'Изображение удалено');
}
此外,我还有以下几行网格:
<td>
<div class="btn-group btn-group">
<button type="button" data-url="{{route('admin.clinic-image.destroy', [$clinic->id, $image->id])}}" class="btn btn-danger">
<i class="fa fa-remove fa-fw"></i>
</button>
</div>
</td>
当我将表单发送到/admin/clinic/1/clinic image/1
时,出现以下错误:
类型错误:传递给App\Http\Controllers\Admin\ClinicImageController::destroy()的参数1必须是App\ClinicImage的实例,字符串给定
控制器路由。
所以我的问题是:为什么DI不能识别我的路线和型号id?试试这个:
public function destroy($clinic, $clinicImage)
{
$clinicImage = ClinicImage::where('id', $clinic)->where('image', $clinicImage); //I'm guessing the name of the columns.
$clinicImage->delete();
return redirect()->back()->with('success', 'Изображение удалено');
}
试试这个:
public function destroy($clinic, $clinicImage)
{
$clinicImage = ClinicImage::where('id', $clinic)->where('image', $clinicImage); //I'm guessing the name of the columns.
$clinicImage->delete();
return redirect()->back()->with('success', 'Изображение удалено');
}
实际上,您在控制器中使用了错误的参数名称 更改控制器中的签名 将其更改为
$clinic\u image
选项1:更改控制器
public function destroy(ClinicImage $clinic_image) //$clinicImage to $clinic_image
{
$clinicImage->delete();
return redirect()->back()->with('success', 'Изображение удалено');
}
选项2:
更改路由文件中的参数:
Route::delete('/admin/clinic/{clinic}/clinic-image/{clinicImage})->name('');
实际上,您在控制器中使用了错误的参数名称 更改控制器中的签名 将其更改为
$clinic\u image
选项1:更改控制器
public function destroy(ClinicImage $clinic_image) //$clinicImage to $clinic_image
{
$clinicImage->delete();
return redirect()->back()->with('success', 'Изображение удалено');
}
选项2:
更改路由文件中的参数:
Route::delete('/admin/clinic/{clinic}/clinic-image/{clinicImage})->name('');
在你的控制器文件中试试这个
公共功能销毁(ClinicImage$ClinicImage)
{
$clinicImage->delete();
return redirect()->back()->带('success'、'CharStyleзжжжжжзжжзежжж;
}
在您的视图文件中
(在这里,您需要一次传递一个id,您需要删除该id)
在控制器文件中尝试此操作
公共功能销毁(ClinicImage$ClinicImage)
{
$clinicImage->delete();
return redirect()->back()->带('success'、'CharStyleзжжжжжзжжзежжж;
}
在您的视图文件中
(在这里,您需要一次传递一个id,您需要删除该id)
您要发送两个参数且仅期望一个,请尝试以下操作:公用函数销毁($clinic,ClinicImage$ClinicImage)您要发送两个参数且仅期望一个,请尝试以下操作:公用函数销毁($clinic,ClinicImage$ClinicImage)我无法更改路由参数,因为控制器是资源。我无法更改路由参数,因为控制器是资源。您的答案部分正确,我刚刚为Clinic$Clinic添加了依赖项您的答案部分正确,我刚刚为Clinic$Clinic添加了依赖项