2011-11-15 44 views
0

我試圖對項目列表實施大量刪除操作,其中每個項目都有一個複選框,並且有一個按鈕可以刪除所有選定的項目。所有在symfony順便說一句。選擇複選框,並將它們作爲參數發送到動作

我最大的問題是:帶複選框的列表來自AJAX調用,所以我無法在定義列表的模板中定義監聽器。我需要在接收AJAX響應的模板中執行此操作。

我給你一些我的代碼:

  • 模板返回列表中包含:

`

foreach($items as $item){ 
    echo '<input id="'.$item->getItemID().'" type="checkbox" onClick="[I CAN'T REFERENCE HERE A FUNCTION IN THE OTHER TEMPLATE]">'; 
    echo 'etc ...'; 
}` 
  • 和模板recieving列表中

`

<div id="itemList"> 
    [the AJAX list goes here] 
</div> 
<input type="button" value="delete all items">` 

所以我的問題是:如何能做到這一點實現的是,當按下按鍵時,調用與選定的複選框(或等價的信息)作爲參數數組的symfony的作用。

非常感謝您的時間!

回答

1

首先要做的是獲取複選框數組並將它們傳遞給symfony。如果你有以下html

<input id="1" type="checkbox" class="delete"> 
<input id="2" type="checkbox" class="delete"> 
<input id="3" type="checkbox" class="delete"> 
<input id="4" type="checkbox" class="delete"> 
<input type="submit"> 

具有以下jquery

$('input[type=submit]').click(function(){ 
    var elems = new Array(); 
    $('.delete:checked').each(function(){ 
     elems.push($(this).attr('id')); 
    }); 

    $.ajax({ 
     type: 'POST', 
     url: 'url', 
     data: {elements_to_delete: elems}}); 
}); 

在這裏看到:http://jsfiddle.net/HbkvF/

然後你做一個executeDeleteBatch()像(未測試):

public function execute(sfWebRequest $request) 
{ 
    $ids = $request->getParameter('elements_to_delete'); 
    $count = Doctrine_Query::create() 
    ->delete() 
    ->from('<YOUR CLASS>') 
    ->whereIn('id', $ids) 
    ->execute(); 
    } 
} 

$count返回刪除的項目數。

相關問題