2011-11-15 12 views
0

アイテムのリストに大量の削除アクションを実装しようとしています。すべてのアイテムにチェックボックスがあり、選択したアイテムをすべて削除するボタンがあります。 symfonyのすべてがbtwです。チェックボックスを選択してパラメータとしてアクションに送信します

私の最大の問題は、チェックボックス付きのリストは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 ...'; 
}` 
  • とリストが供給テンプレートが
  • です

`

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

だから私の質問は:どのように私はそれはボタンが押されたとき、パラメータとして選択チェックボックス(または同等の情報)の配列を持つsymfonyのアクションのために呼び出す、ということを実装するために行うことができます。

ありがとうございます!

答えて

1

まず、チェックボックスの配列を取得してsymfonyに渡します。

$('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(); 
    } 
} 
jquery以下と

<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"> 

:あなたはhtml次がある場合

$countは、削除された項目の数を返します。

関連する問題