Задать вопрос
@prokopov-vi

Как создать несколько массовых действий grid?

Мне нужно реализовать несколько массовых действий в grid .
Одно действие удаления реализую так:

protected function _prepareMassaction()
    {
        $this->setMassactionIdField('entity_id');
        $this->getMassactionBlock()->setFormFieldName('entity_id');

        $this->getMassactionBlock()->addItem('delete', array(
            'label' => $this->__('Delete'),
            'url' => $this->getUrl( '*/*/massDelete'),
        ));
  return $this;
    }


В контролере обрабатываю массив и все работает корректно.

Но как сделать несколько массовых действий ?

Например если сделать так:

protected function _prepareMassaction()
    {
        $this->setMassactionIdField('entity_id');
        $this->getMassactionBlock()->setFormFieldName('entity_id');

        $this->getMassactionBlock()->addItem('delete', array(
            'label' => $this->__('Delete'),
            'url' => $this->getUrl( '*/*/massDelete'),
        ));

        $this->getMassactionBlock()->addItem('submit', array(
            'label' => $this->__('Aprove'),
            'url' => $this->getUrl( '*/*/massAprove'),
        ));


        return $this;
    }


То получается бред. Всегда будет обрабатываться Delete.

Каким способом можно реализовать такую возможность ?
  • Вопрос задан
  • 206 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
z0rg
@z0rg
senior developer / devops
По верному пути идете, чуток невнимательны.

Если присмотреться _prepareMassaction чисто для добавления кнопок, а не для обработки
Для обработки уже используются другие методы в зависимости от указанного метода в getUrl, по типу massDeleteAction(), massApproveAction()

Так же можно обработать не тем же контроллером, а другим изменив * на конкретные названия модуля, контроллера и action метода
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
18 янв. 2025, в 03:12
1000 руб./за проект
18 янв. 2025, в 00:01
500 руб./за проект
17 янв. 2025, в 23:56
10000 руб./за проект