2014-10-30 39 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'); 
} 
相關問題