【问题标题】:ajax octobercms passing value of idajax octobercms 传递 id 值
【发布时间】:2015-06-26 04:36:10
【问题描述】:
 <button
            type="button"
            class="btn btn-small btn-danger icon-trash"
            data-request="onDeleteItem"
            data-control="popup"
            data-request-data="id: " <<<<<<<----
            data-trigger-action="enable"
            data-stripe-load-indicator>
</button>

Configurations.php::controller

public function onDeleteItem()

如何获取列表中 id 的值?我想列出一个表中的所有配置,有一个自定义列,编辑,删除

我想点击删除,然后它会删除该项目,但我如何获得ID?

【问题讨论】:

    标签: php ajax octobercms


    【解决方案1】:

    如果它在控制器的操作中,那么

    <?= $this -> id ?>
    

    应该可以。否则你可以做类似的事情

    <?php
        $isDelete = $this->formGetContext() == 'delete';
    ?>
    

    初始化它,然后将其用作

    data-request-data="id: <?= (int) $isDelete ?>"
    

    如所见here

    【讨论】:

    • 在 OC 中,index.htm 是 = $this->listRender() ?> 对于列表中的每个项目,都会有一个 ID。该列表有多个 id。如何正确引用它? link
    • 是的,ID 取自与控制器相关的模型。此处使用了 ListController,因此它扩展了该类 (github.com/octobercms/october/blob/master/modules/backend/…)。您可以使用该类中的公共函数之一来获取列表数据,包括项目的 ID
    • 好的。祝你好运。如果您遇到问题,请随时在此处发表评论,我将帮助解决它。反正我是插件作者
    • 啊,好吧。尝试修改代码,您可以立即制作自己的插件!快乐编码
    【解决方案2】:

    我已经使用过这个(引用自 RainLab.Blog 插件)并且效果很好:

    <button
        class="btn btn-default oc-icon-trash-o"
        disabled="disabled"
        onclick="$(this).data('request-data', {
            checked: $('.control-list').listWidget('getChecked')
        })"
        data-request="onDelete"
        data-request-confirm="Are you sure?"
        data-trigger-action="enable"
        data-trigger=".control-list input[type=checkbox]"
        data-trigger-condition="checked"
        data-request-success="$(this).prop('disabled', false)"
        data-stripe-load-indicator>
        Delete all selected
    </button>
    

    您可以看到,这在onClick 处理程序中使用了jQuery 来获取所有检查的ID 并将其传递给控制器​​。

    然后在你的控制器中你可以这样做:

    public function index_onDelete()
    {
        if (($checkedIds = post('checked')) && is_array($checkedIds) && count($checkedIds)) {
    
            foreach ($checkedIds as $modelId) {
                if ((!$model = Model::find($modelId)))
                    continue;
    
                $model->delete();
            }
    
            Flash::success('Successfully deleted those items.');
        }
    
        return $this->listRefresh();
    }
    

    只需确保将model 替换为您的实际“模型”即可。控制器方法名称上的 index_ 前缀确保我们在索引上下文(显示模型列表的位置)中引用 onDelete

    【讨论】:

    • 您的回答很好,谢谢。你能提供任何你从哪里学会在控制器上索引_的文档吗??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    相关资源
    最近更新 更多