我有一个概述页面,我可以点击一个按钮来删除单个行或可以选择多行删除。laravel中的单个和多个删除的最佳方法
因为laravel只能通过发送删除请求来删除一个项目,所以我很好奇在这个问题上什么是最好的方法。
我真的不想为此使用ajax,因为我利用Session :: flash的反馈消息等。
对单行执行如下操作将会非常棒:item/1?action=destroy
,所以我可以使用表单来删除多个值,因为我无法为单行嵌套表单。
我很想听听你做这些事的方法。
我有一个概述页面,我可以点击一个按钮来删除单个行或可以选择多行删除。laravel中的单个和多个删除的最佳方法
因为laravel只能通过发送删除请求来删除一个项目,所以我很好奇在这个问题上什么是最好的方法。
我真的不想为此使用ajax,因为我利用Session :: flash的反馈消息等。
对单行执行如下操作将会非常棒:item/1?action=destroy
,所以我可以使用表单来删除多个值,因为我无法为单行嵌套表单。
我很想听听你做这些事的方法。
你的页面可以具有只是单一形式的,并且包括submit
按钮(或input
s的type="submit"
)沿着每一行,与name="delete"
和value
集到该行的ID。另外,您可以在每行旁边都有一个复选框,并且value
再次设置为其ID,然后使用name="deleteMultiple"
作为一个“Delete Checked Rows”提交按钮。这种形式将POST
来,将采取一看Input
值,并采取相应的行动路线:
如果被点击单行的删除按钮,Input::get('delete')
将 包含单列的ID将被删除,您可以将其传递给 您的destroy
方法。
如果“删除选中的行”被点击, Input::has('deleteMultiple')
将返回true,而Input
将 有包含阵列的复选框被选中。然后你可以做 类似Item::destroy(array(1, 2, 3));
。
您可以使用javascript简化或增强某些表单处理,尽管这不是必需的。
公共职能破坏(请求$要求) {
$sd = $request::get('id');
if (!empty($sd)) {
$register = Register::findOrFail($sd);
$register->delete();
} else {
$data = $request::get('chk');
foreach ($data as $d) {
$register = Register::findOrFail($d);
$register->delete();
}
}
return redirect('register');
}
也许你不明白阿贾克斯,但调用,破坏网址,无需重新加载页面,是阿贾克斯。 – 2014-10-30 00:19:30
@ Mike'Pomax'Kamermans在我的问题中,我没有看到'没有重新加载页面',因为我想重新加载页面;)。我不想使用AJAX,因为它在没有页面刷新的情况下进行删除,并且使用AJAX,我也无法利用laravel的优势。 – guidsen 2014-10-30 00:23:54
实际上用ajax你可以先检查破坏的结果。成功?优秀:直接调用'window.location = http:// thepageineed;'然后转到具有更新数据模型的页面。给现代浏览器和历史API有点愚蠢,但非常好。但错误,你可以更聪明的东西 – 2014-10-30 00:25:13