как добавить сериализатор сетки заказов в пользовательский модуль
Я хочу создать функциональность Order Grid Serializer
.
Если кто-нибудь создаст функциональность такого типа, пожалуйста, направьте меня..
3
Author: Qaisar Satti, 2016-01-21
1 answers
Наконец-то я понимаю себя. надеюсь, это поможет сообществу.
Сначала добавьте tab
для назначения порядка
$this->addTab('order_section', array(
'label' => Mage::helper('sales')->__('Assign Order'),
'title' => Mage::helper('sales')->__('Assign Order'),
'url' => $this->getUrl('*/*/assignorder', array('_current' => true)),
'class' => 'ajax',
));
Затем упорядочьте сетку
<?php
class SIE_Assignorder_Adminhtml_Assignorder_Edit_Tab_Grid extends Mage_Adminhtml_Block_Widget_Grid
{
public function __construct()
{
parent::__construct();
$this->setId('entity_id');
$this->setDefaultDir('DESC');
$this->setSaveParametersInSession(false); //Dont save paramters in session or else it creates problems
$this->setUseAjax(true);
}
protected function _prepareCollection()
{
$collection = Mage::getModel('sales/order')->getCollection();
$this->setCollection($collection);
return parent::_prepareCollection();
}
protected function _addColumnFilterToCollection($column)
{
// Set custom filter for in order flag
if ($column->getId() == 'order_id') {
$sId = $this->getRequest()->getParam('id');
$ordermodel = Mage::getModel('assignorder/checklist')->getchecklistorder($sId);
$orderIds = "";
if(count($ordermodel)) {
$orders = explode(',',$ordermodel['order_id']);
}
if (empty($orderIds)) {
$orderIds = 0;
}
if ($column->getFilter()->getValue() and $orderIds != 0) {
$this->getCollection()->addFieldToFilter('entity_id', array('in'=>$orderIds));
}
else {
if($orderIds) {
$this->getCollection()->addFieldToFilter('entity_id', array('nin'=>$orderIds));
}
}
} else {
parent::_addColumnFilterToCollection($column);
}
return $this;
}
protected function _prepareColumns()
{
$this->addColumn('order_id', array(
'header_css_class' => 'a-center',
'type' => 'checkbox',
'name' => 'order',
'values'=> $this->_getSelectedOrders(),
'align' => 'center',
'index' => 'entity_id'
));
$this->addColumn('increment_id', array(
'header'=> Mage::helper('catalog')->__('Order #'),
'align' => 'left',
'index' => 'increment_id',
));
$this->addColumn('grand_total', array(
'header'=> Mage::helper('catalog')->__('Grand Total'),
'align' => 'left',
'index' => 'grand_total',
));
}
public function getGridUrl()
{
return $this->_getData('grid_url') ? $this->_getData('grid_url') : $this->getUrl('*/*/assignordergrid', array('_current'=>true));
}
public function _getSelectedOrders() {
$orders = array_keys($this->getSelectedOrders());
return $orders;
}
public function getSelectedOrders() {
$orders = array();
$sId = $this->getRequest()->getParam('id');
if (isset($sId)) {
$customers=array();
$ordermodel = Mage::getModel('assignorder/checklist')->getchecklistorder($sId);
if(count($ordermodel))
{
$orders = explode(',',$ordermodel['order_id']);
$a=0;
}
}
return $orders;
}
}
Xml-код
<adminhtml_assignorder_checklist_assignorder>
<block type="core/text_list" name="root" output="toHtml">
<block type="assignorder/adminhtml_checklist_edit_tab_grid" name="ordersgrid"/>
<block type="adminhtml/widget_grid_serializer" name="grid_serializer">
<reference name="grid_serializer">
<action method="initSerializerBlock">
<grid_block_name>ordersgrid</grid_block_name>
<data_callback>_getSelectedOrders</data_callback>
<hidden_input_name>links[orders]</hidden_input_name>
<reload_param_name>orders</reload_param_name>
</action>
</reference>
</block>
</block>
</adminhtml_assignorder_checklist_assignorder>
<adminhtml_assignorder_checklist_assignordergrid>
<block type="core/text_list" name="root" output="toHtml">
<block type="assignorder/adminhtml_checklist_edit_tab_grid" name="ordersgrid"/>
</block>
</adminhtml_assignorder_checklist_assignordergrid>
Для контроллера
public function assignorderAction(){
$this->loadLayout();
$this->getLayout()->getBlock('ordersgrid')->setOrders($this->getRequest()->getPost('orders', null))
;
$this->renderLayout();
}
public function assignordergridAction(){
$sId = $this->getRequest()->getParam('id');
$ordermodel = Mage::getModel('assignorder/checklist')->getchecklistorder($sId);
$orders ="";
if(count($ordermodel))
{
$orders = explode(',',$ordermodel['order_id']);
}
$this->loadLayout();
$this->getLayout()->getBlock('ordersgrid')
->setOrders($this->getRequest()->getPost('orders', $order));
$this->renderLayout();
}
Получение значений сетки
if(isset($postData['links'])){
$orders = Mage::helper('adminhtml/js')->decodeGridSerializedInput($postData['links']['orders']); //Save the array to your database
$orders = implode(",", $orders);
}
1
Author: Qaisar Satti, 2016-01-26 12:25:06