我的资源控制器有以下destroy方法:
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>
最后我有按钮点击发送表格的功能:
$('.table').find('.btn.btn-danger').click(function(){
var form = makeForm({_method: 'DELETE'},{action: $(this).data('url')});
form.submit();
});
function makeForm(data, options) {
var form = document.createElement('form');
form.method = 'POST';
var token = document.createElement('input');
token.name = '_token';
token.value = jQuery('meta[name="csrf-token"]').attr('content');
form.appendChild(token);
jQuery.each(data, function(key, value){
var input = document.createElement('input');
input.name = key;
input.value = value;
form.appendChild(input);
});
if(Object.keys(options).length) {
jQuery.each(options, function(option, value){
form[option] = value;
});
}
document.body.appendChild(form);
return form;
}
当我将表单发送到/admin/clinic/1/clinic-image/1
时,我收到以下错误消息:
Type error: Argument 1 passed to App\Http\Controllers\Admin\ClinicImageController::destroy() must be an instance of App\ClinicImage, string given
所以我的问题是:为什么DI不能识别我的路线和模型ID?
答案 0 :(得分:2)
试试这个:
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', 'Изображение удалено');
}
答案 1 :(得分:0)
实际上,您在控制器中使用了错误的参数名称。
在控制器中更改签名。
而不是$clinicImage
将其更改为$clinic_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('');
答案 2 :(得分:0)
在控制器文件中尝试此操作
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])}}" class="btn btn-danger"> (over here you need to pass 1 id at a time which you need to delete)
<i class="fa fa-remove fa-fw"></i>
</button>
</div>
</td>