我正在尝试对项目列表实施大量删除操作,其中每个项目都有一个复选框,并且有一个按钮可以删除所有选定的项目。所有这些都在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动作,其中包含一组选定的复选框(或等效信息)作为参数。
非常感谢你的时间!
答案 0 :(得分: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
返回已删除的项目数。