【问题标题】:Best approach on single and multiple deletion in laravellaravel中单个和多个删除的最佳方法
【发布时间】:2014-10-30 00:17:23
【问题描述】:

我有一个概览页面,我可以在其中单击一个按钮来删除单行,也可以选择要删除的多行。

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

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

如果对单行执行如下操作真的很棒:item/1?action=destroy 用于单行,因此我可以使用表单来删除要删除的多个值,因为我不能为单行嵌套表单。

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

【问题讨论】:

  • 也许你不明白ajax是什么,但是调用那个destroy URL,而不重新加载页面,就是ajax。
  • @Mike'Pomax'Kamermans 我在我的问题中没有看到without reloading the page,因为我想重新加载页面;)。我不想使用 AJAX,因为它会在不刷新页面的情况下进行删除,而使用 AJAX 我也无法利用 laravel 的优势。
  • 其实用ajax可以先检查销毁的结果。成功?非常好:直接致电window.location = http://thepageineed;,然后您就可以转到包含更新数据模型的页面。考虑到现代浏览器和历史 API 有点傻,但完全没问题。但如果犯错,你可以更聪明地处理事情
  • 我不知道在从我的成功函数重新加载页面后我能够使用返回会话。现在效果很好。

标签: php forms laravel


【解决方案1】:

您的页面可以只有一个表单,并在每一行旁边包含submit 按钮(或inputs 和type="submit"),并将name="delete"value 设置为行的ID。此外,您可以在每一行旁边设置一个复选框,再次将value 设置为其ID,然后使用name="deleteMultiple" 一个“删除已检查行”提交按钮。此表单将POST 转到一条查看Input 值并采取相应措施的路线:

  • 如果单击了单行的删除按钮,Input::get('delete') 将 包含要删除的单行的 ID,您可以将其传递给 你的destroy 方法。

  • 如果单击“删除检查的行”, Input::has('deleteMultiple') 将返回 true,而 Input 将 包含已选中复选框的数组。然后你可以做 类似Item::destroy(array(1, 2, 3));

您可以使用 javascript 来简化或增强某些表单处理,但这不是必需的。

【讨论】:

    【解决方案2】:

    公共函数销毁(请求 $request) {

        $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');
    }
    

    【讨论】:

      猜你喜欢
      • 2016-05-22
      • 1970-01-01
      • 2015-12-13
      • 1970-01-01
      • 2019-01-03
      • 2020-08-03
      • 1970-01-01
      • 2013-05-03
      • 1970-01-01
      相关资源
      最近更新 更多