установите флажки и отправьте их в качестве параметра для действия

я пытаюсь реализовать массивное действие удаления для списка элементов, где у каждого элемента есть флажок, и есть кнопка для удаления всех выбранных элементов. Все это в 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 ...';
}`
  • и шаблон, получающий список,

`

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

Итак, мой вопрос: как я могу сделать это, чтобы при нажатии кнопки вызывать действие symfony с массивом выбранных флажков (или эквивалентной информацией) в качестве параметра.

Спасибо вам большое за ваше время!


person Andreu Ramos    schedule 15.11.2011    source источник


Ответы (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 возвращает количество удаленных элементов.

person samura    schedule 15.11.2011