@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 просмотров
Решения вопроса 1
z0rg
@z0rg
senior developer / devops
По верному пути идете, чуток невнимательны.

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

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

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

Войти через центр авторизации
Похожие вопросы