ajax octobercms передает значение идентификатора

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

in Configurations.php::controller

public function onDeleteItem()

как получить значение id в списке? Я хочу перечислить все конфигурации в таблице, иметь настраиваемый столбец, редактировать, удалять

я хочу нажать «Удалить», тогда он удалит элемент, но как мне получить идентификатор?


person Richard Irwan Shah    schedule 19.04.2015    source источник


Ответы (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>

Вы можете видеть, что это использует jQuery в обработчике onClick, чтобы получить все проверенные идентификаторы и передать их контроллеру.

Затем в вашем контроллере вы можете сделать это:

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 в контексте индекса (где отображается список ваших моделей).

person Pratyush Pundir    schedule 25.06.2015
comment
Ваш ответ хорош, спасибо. Можете ли вы предоставить какую-либо документацию, откуда вы научились index_ на контроллере ?? - person Zakir hussain; 14.04.2018

Если это внутри действия контроллера, то

<?= $this -> id ?>

должно сработать. Или еще вы можете сделать что-то вроде

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

инициализировать его, а затем использовать как

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

Как показано здесь

person Saifur Rahman Mohsin    schedule 19.04.2015
comment
в OC index.htm имеет вид ‹?= $this-›listRender() ?› для каждого элемента в списке будет идентификатор. список имеет несколько идентификаторов. как правильно на него ссылаться? ссылка - person Richard Irwan Shah; 20.04.2015
comment
Да, идентификатор берется из модели, связанной с контроллером. Здесь используется ListController, поэтому он расширяет этот класс (github .com/octobercms/october/blob/master/modules/backend/). Вы можете использовать одну из этих общедоступных функций в этом классе, чтобы получить данные списка, включая идентификаторы элементов. - person Saifur Rahman Mohsin; 20.04.2015
comment
Хорошо. Удачи. Не стесняйтесь комментировать здесь, если у вас возникнут проблемы, я помогу их исправить. Я все равно автор плагина - person Saifur Rahman Mohsin; 21.04.2015
comment
Ах хорошо. Попробуйте поработать с кодами, и вы сможете создавать свои собственные плагины в кратчайшие сроки! Удачного кодирования - person Saifur Rahman Mohsin; 22.04.2015