【发布时间】:2019-10-11 16:13:57
【问题描述】:
我正在使用 Laravel 构建一个 CRUD。每个类别都有很多附件,每个附件都属于一个类别。
在 category.edit 视图中,我想让用户可以(单独)从类别中删除附件。这个方法我试过了,没用:
附件的注册路由:
Route::group(['middleware' => ['auth']], function () {
Route::delete('attachment/{id}', 'AttachmentController@delete')->name('attachment');
});
处理删除构建 AttachmentController@delete 方法:
class AttachmentController extends Controller
{
public function delete($id) {
$toDelete = Attachment::findOrFail($id);
$toDelete->delete();
return redirect()->back();
}
}
在 CategoryController(编辑方法)中,我获取链接到要在视图中呈现的每个类别的附件:
public function edit($category)
{
$wildcard = $category;
$category = Category::findOrFail($wildcard);
$attachments = App\Category::findOrFail($wildcard)->attachments()->get()->toArray();
return view('category.edit', [
'category' => $category,
'attachments' => $attachments
]);
}
在视图中,我渲染了附件和要删除的按钮。我完全意识到在另一个表单中包含一个表单的错误,但是我不知道提交此删除请求的另一种方法。
// update Category form
@foreach ($attachments as $attachment)
<div class="row">
<div class="col-4">
<img style="width: 100%;" src={{ $attachment['url'] }} alt="">
</div>
<div class="col-4">
<div>
<p class="general_par general_url">{{ $attachment['url'] }}</p>
</div>
</div>
<div class="col-4">
<form action="{{ route('attachment', $attachment['id']) }}" method="POST">
@csrf
@method('DELETE')
<button type="submit" class="btn btn-danger">Delete Image</button>
</form>
</div>
</div>
<hr>
@endforeach
// end of update Category form
我应该在 CategoryController 中构建一个 deleteAttachment 方法吗?如果是这样,我怎样才能提交删除请求?另外,如果将来任何其他模型都有附件,我是否应该在每个控制器内构建一个 deleteAttachment 方法?那很麻烦。提前致谢
【问题讨论】:
标签: laravel