Флажок фильтрации в админке сетки Magento - PullRequest
1 голос
/ 08 марта 2012

grid filtering and checkboxes

У меня есть модель Slider, имеющая несколько связанных изображений (моделей). При редактировании ползунка есть вкладка для его изображений. Теперь это можно изменить, чтобы выбрать и отменить выбор, содержащий изображения. Похоже, это делается через сетку администратора, имеющую столбец флажка (клавиша «значения» предназначена для тестирования):

    $this->addColumn('in_slider', array(
        'header_css_class' => 'a-center',
        'type'      => 'checkbox',
        'name'      => 'in_slider',
        'values'    => array(1,2),
        'align'     => 'center',
        'index'     => 'slider_image_id'
    ));

Допустим, к ползунку на изображении выше прикреплено одно изображение, и это прекрасно работает. Но когда пользователь выбирает «Любой» и нажимает «Поиск», все изображения должны отображаться, но те, которые не связаны, должны быть отменены. Я думаю, что это стандартное поведение для такой функции.

Чего я не понимаю, так это механизма за этими двумя кнопками: Reset Filter и Search. Из того, что мне удалось выяснить, класс сетки имеет метод getGridUrl(), который используется для обновления данных сетки (через AJAX). Этот URL-адрес сопоставляется с контроллером.

// in grid class
public function getGridUrl()
{
    return $this->getUrl('*/*/editGrid', array('_current' => true));
}

// Image controller
public function editGridAction()
{
    $blockMarkup = $this->getLayout()->createBlock('module/someblock')->toHtml();
    $this->getResponse()->setBody($blockMarkup);
}

А как насчет кнопки «Поиск»? Как это работает?

Как другие модули узнают, когда показывать ВСЕ объекты или выполнять поиск "Да" или "Нет"?

При сохранении ползунка, как можно получить выбранные значения? Работа в контроллере ползунка saveAction Я полагаю, но как вы получаете значения флажка?

1 Ответ

0 голосов
/ 15 ноября 2012

То, что вы ищете, это массовое действие .Добавьте эту функцию в свой файл сетки (что бы ни расширяло Mage_Adminhtml_Block_Weidget_Grid):

protected function _prepareMassaction()
{
  $this->setMassactionIdField('some_ID');
  $this->getMassactionBlock()->setFormFieldName('element_name');  //html name of checkbox
  $this->getMassactionBlock()->addItem('some_ID', array(
    'label'=> __('Some Label'),
    'url'  => $this->getUrl('*/*/doSomething'),   //an action defined in the controller
    'selected' => 'selected',
    'confirm' => __('Are you sure?')
  ));

  return $this;
}

Вот хороший пост в блоге, который помогает объяснить концепцию: http://inchoo.net/ecommerce/magento/how-to-add-massactions-to-magentos-grid/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...