2014-10-30 117 views
1

我有一个概述页面,我可以点击一个按钮来删除单个行或可以选择多行删除。laravel中的单个和多个删除的最佳方法

因为laravel只能通过发送删除请求来删除一个项目,所以我很好奇在这个问题上什么是最好的方法。

我真的不想为此使用ajax,因为我利用Session :: flash的反馈消息等。

对单行执行如下操作将会非常棒:item/1?action=destroy,所以我可以使用表单来删除多个值,因为我无法为单行嵌套表单。

我很想听听你做这些事的方法。

+0

也许你不明白阿贾克斯,但调用,破坏网址,无需重新加载页面,是阿贾克斯。 – 2014-10-30 00:19:30

+0

@ Mike'Pomax'Kamermans在我的问题中,我没有看到'没有重新加载页面',因为我想重新加载页面;)。我不想使用AJAX,因为它在没有页面刷新的情况下进行删除,并且使用AJAX,我也无法利用laravel的优势。 – guidsen 2014-10-30 00:23:54

+0

实际上用ajax你可以先检查破坏的结果。成功?优秀:直接调用'window.location = http:// thepageineed;'然后转到具有更新数据模型的页面。给现代浏览器和历史API有点愚蠢,但非常好。但错误,你可以更聪明的东西 – 2014-10-30 00:25:13

回答

1

你的页面可以具有只是单一形式的,并且包括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简化或增强某些表单处理,尽管这不是必需的。

0

公共职能破坏(请求$要求) {

$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'); 
} 
相关问题