Magento — adminhtml — раскрывающийся список в виде фильтра в пользовательской сетке

Я создал сетку пользовательских заказов в админ-панели, которая показывает мне способ оплаты и способ доставки заказа.

Вот мой кастомный Grid.php:

<?PHP
class Mage_Adminhtml_Block_Sales_Order_Grid extends

Mage_Adminhtml_Block_Widget_Grid
{

public function __construct()
{
parent::__construct();
$this->setId('sales_order_grid');
$this->setUseAjax(true);
$this->setDefaultSort('created_at');
$this->setDefaultDir('DESC');
$this->setSaveParametersInSession(true);
}

/**
* Retrieve collection class
*
* @return string
*/
protected function _getCollectionClass()
{
return 'sales/order_grid_collection';
}

protected function _prepareCollection()
{
$collection = Mage::getResourceModel($this->_getCollectionClass());
$this->setCollection($collection);
return parent::_prepareCollection();
}

protected function _prepareColumns()
{

$this->addColumn('real_order_id', array(
'header'=> Mage::helper('sales')->__('Order #'),
'width' => '80px',
'type'  => 'text',
'index' => 'increment_id',
));

if (!Mage::app()->isSingleStoreMode()) {
$this->addColumn('store_id', array(
'header'    => Mage::helper('sales')->__('Purchased From (Store)'),
'index'     => 'store_id',
'type'      => 'store',
'store_view'=> true,
'display_deleted' => true,
));
}

$this->addColumn('created_at', array(
'header' => Mage::helper('sales')->__('Purchased On'),
'index' => 'created_at',
'type' => 'datetime',
'width' => '100px',
));

$this->addColumn('billing_name', array(
'header' => Mage::helper('sales')->__('Клиент'),
'index' => 'billing_name',
));

$this->addColumn('grand_totals', array(
'header' => Mage::helper('sales')->__('Авансово плащане'),
'index' => 'increment_id',
'width' => '100px',
'renderer'  => 'Mage_Adminhtml_Block_Sales_Order_AvansRenderer',
));

$this->addColumn('avans', array(
'header' => Mage::helper('sales')->__('Плащане при доставка'),
'index' => 'increment_id',
'width' => '50px',
'renderer'  => 'Mage_Adminhtml_Block_Sales_Order_BeforeDelRenderer',
));

$this->addColumn('grand_total', array(
'header' => Mage::helper('sales')->__('Тотал'),
'index' => 'increment_id',
'width' => '100px',
'renderer'  => 'Mage_Adminhtml_Block_Sales_Order_TotalRenderer',
));

$this->addColumn('shipping_description', array(
'header' => Mage::helper('sales')->__('Начин на доставка'),
'index' => 'shipping_description',
));

$this->addColumn('payment_method',
array(
'header'=> Mage::helper('catalog')->__('Начин на плащане'),
'width' => '230px',
'index' => 'method',
'renderer'  => 'Mage_Adminhtml_Block_Catalog_Product_PaymentMethodRenderer',
));
$this->addColumn('shipping_description', array(
'header' => Mage::helper('sales')->__('Начин на доставка'),
'index' => 'shipping_description',
));$this->addColumn('status', array(
'header' => Mage::helper('sales')->__('Status'),
'index' => 'status',
'type'  => 'options',
'width' => '70px',
'options' => Mage::getSingleton('sales/order_config')->getStatuses(),
));

if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/view')) {
$this->addColumn('action',
array(
'header'    => Mage::helper('sales')->__('Action'),
'width'     => '50px',
'type'      => 'action',
'getter'     => 'getId',
'actions'   => array(
array(
'caption' => Mage::helper('sales')->__('View'),
'url'     => array('base'=>'*/sales_order/view'),
'field'   => 'order_id',
'data-column' => 'action',
)
),
'filter'    => false,
'sortable'  => false,
'index'     => 'stores',
'is_system' => true,
));
}
$this->addRssList('rss/order/new', Mage::helper('sales')->__('New Order RSS'));

$this->addExportType('*/*/exportCsv', Mage::helper('sales')->__('CSV'));
$this->addExportType('*/*/exportExcel', Mage::helper('sales')->__('Excel XML'));

return parent::_prepareColumns();
}

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

if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/cancel')) {
$this->getMassactionBlock()->addItem('cancel_order', array(
'label'=> Mage::helper('sales')->__('Cancel'),
'url'  => $this->getUrl('*/sales_order/massCancel'),
));
}

if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/hold')) {
$this->getMassactionBlock()->addItem('hold_order', array(
'label'=> Mage::helper('sales')->__('Hold'),
'url'  => $this->getUrl('*/sales_order/massHold'),
));
}

if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/unhold')) {
$this->getMassactionBlock()->addItem('unhold_order', array(
'label'=> Mage::helper('sales')->__('Unhold'),
'url'  => $this->getUrl('*/sales_order/massUnhold'),
));
}

$this->getMassactionBlock()->addItem('pdfinvoices_order', array(
'label'=> Mage::helper('sales')->__('Print Invoices'),
'url'  => $this->getUrl('*/sales_order/pdfinvoices'),
));

$this->getMassactionBlock()->addItem('pdfshipments_order', array(
'label'=> Mage::helper('sales')->__('Print Packingslips'),
'url'  => $this->getUrl('*/sales_order/pdfshipments'),
));

$this->getMassactionBlock()->addItem('pdfcreditmemos_order', array(
'label'=> Mage::helper('sales')->__('Print Credit Memos'),
'url'  => $this->getUrl('*/sales_order/pdfcreditmemos'),
));

$this->getMassactionBlock()->addItem('pdfdocs_order', array(
'label'=> Mage::helper('sales')->__('Print All'),
'url'  => $this->getUrl('*/sales_order/pdfdocs'),
));

$this->getMassactionBlock()->addItem('print_shipping_label', array(
'label'=> Mage::helper('sales')->__('Print Shipping Labels'),
'url'  => $this->getUrl('*/sales_order_shipment/massPrintShippingLabel'),
));

return $this;
}

public function getRowUrl($row)
{
if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/view')) {
return $this->getUrl('*/sales_order/view', array('order_id' => $row->getId()));
}
return false;
}

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

}

Этот код дает мне следующий результат:

введите описание изображения здесь

Как вы можете видеть фильтр входов для двух shipping_description а также payment_method простые текстовые вводы.

  1. Как я могу сделать из них выпадающие меню, содержащие правильную информацию со всеми описаниями методов доставки и всеми payment_method заглавие?
  2. Как я могу сделать их фильтруемыми после этого?

Надеюсь, я хорошо объяснил свой вопрос. Ждем вашей помощи и ответов.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …