【问题标题】:select checkboxes and send them as parameter to an action选择复选框并将它们作为参数发送到操作
【发布时间】:2011-11-15 17:48:45
【问题描述】:

我正在尝试对项目列表实施大规模删除操作,其中每个项目都有一个复选框,并且有一个按钮可以删除所有选定的项目。顺便说一句,所有这些都在 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 操作。

非常感谢您的宝贵时间!

【问题讨论】:

    标签: javascript ajax symfony1 checkbox checkboxlist


    【解决方案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 返回删除的项目数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-08
      • 2014-01-15
      • 1970-01-01
      • 1970-01-01
      • 2019-09-02
      • 1970-01-01
      相关资源
      最近更新 更多