Как удалить элемент из dropdown yii2?

189
30 октября 2018, 17:00

Всем привет.

Есть форма, за которую отвечает SiteController. В ней я создаю пару элементов для добавления и удаления элементов из dropdown. За которые отвечает другой TitleController.

<div class="plan-form">
    <?php $form = ActiveForm::begin(); ?>
    <?= $form->field($model, 'title_id')->dropDownList(
        $model->getModuleTitleName()
    ) ?>
    <?= Html::a(
            'add',
            ['title/create'],
            [
                    'class' => 'btn-info btn-sm'
            ]
    ) ?>
    <?= Html::a(
            'delete',
            ['title/delete'],
            [
                    'class' => 'btn-default btn-sm',
                    'data-method' => 'post',
            ]
    ) ?>

    <a href="<?= Url::to(['title/delete', ])?>" data-method="post" class="btn-default btn-sm">
        <i class="fa fa-sign-out"></i> delete
    </a>
    <?php ActiveForm::end(); ?>
</div>

TitleController методы для создания и удаления элементов у dropdown.

public function actionCreate()
    {
        $model = new Title();
        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['site/create',]);
        }
        return $this->render('create', [
            'model' => $model,
        ]);
    }
public function actionDelete($id)
    {
        $this->findModel($id)->delete();
        return $this->redirect(['index']);
    }

Если я не передаю 'data-method' => 'post', то 405 ошибка, иначе если добавляю, то требует id, но как его передать если этот элемент находится в dropdown?

Answer 1

Во-первых, контроллер не отвечает за форму...метод, возможно...

Во-вторых, для того чтоб реализовать то что вы хотите нужна другая логика... если вы хотите без обновления страницы добавлять или удалять элементы дропдауна, то вам нужно использовать ajax запросы

т.е.

  1. отслеживаете клик на кнопку, к примеру удалить
  2. с помощью js или jquery получаете значение дропдауна(получаем елемент который нужно удалить)
  3. отправляете запрос на удаление с полученным на прошлом шаге элементом
  4. после успешного запроса обновляете дропдаун

если была другая цель, сформируйте более подробно задание

READ ALSO
Высчитать сколько процентов занимает 1 пункт из общего числа

Высчитать сколько процентов занимает 1 пункт из общего числа

Есть массив, в котором записаны цифрыВ массиве много элементов, но вывожу я только 10

144
Ошибка в mod_rewrite

Ошибка в mod_rewrite

Использую стандартные настройки

150
Проблема добавление данных laravel

Проблема добавление данных laravel

всем доброе время суток не могу добавть запись в чем проблема именно в моей ситуации

169
Всплывающий label

Всплывающий label

На странице есть 2 чекбокса

175