Magento, Расширение сетки заказов с использованием метода разметки XML, выбор параметров - PullRequest
1 голос
/ 20 февраля 2012

Я ищу пример того, как заполнить заголовок опции выбора в сетке заказов Magento. Далее создается новый столбец, отображающий данные и выводящий меню выбора в заголовке столбца. Проблема в том, что параметры не создаются в меню выбора.

<layout>
    <!-- main layout definition that adds the column -->
    <add_order_grid_column_handle>
        <reference name="sales_order.grid">
            <action method="addColumnAfter">
                <columnId>customer_country_id</columnId>
                <arguments module="ordermanager" translate="header">
                    <header>Shipping Country</header>
                    <index>customer_country_id</index>
                    <type>options</type>
                    <sortable>true</sortable>
                    <options>Flipmedia_AddShippingCountryColumn_Adminhtml_Block_Widget_Grid_Column_Renderer_Country</options>
                    <renderer>Flipmedia_AddShippingCountryColumn_Adminhtml_Block_Widget_Grid_Column_Renderer_Country</renderer>
                </arguments>
                <after>status</after>
            </action>
        </reference>
    </add_order_grid_column_handle>

    <!-- order grid action -->
    <adminhtml_sales_order_grid>
        <!-- apply the layout handle defined above -->
        <update handle="add_order_grid_column_handle" />
    </adminhtml_sales_order_grid>

    <!-- order grid view action -->
    <adminhtml_sales_order_index>
        <!-- apply the layout handle defined above -->
        <update handle="add_order_grid_column_handle" />
    </adminhtml_sales_order_index>
</layout>



class Flipmedia_AddShippingCountryColumn_Adminhtml_Block_Widget_Grid_Column_Renderer_Country extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract {

    private static $_countryList = array();

    public function options(Varien_Object $row) {
         if (count(self::$_countryList) == 0) {          
            $countries =        Mage::getResourceModel('directory/country_collection')
                                    ->loadData()
                                    ->toOptionArray(false);
            foreach ($countries as $country) {
                self::$_countryList[$country['value']] = $country['label'];
            }
         }

         return self::$_countryList;
     }

    public function render(Varien_Object $row){
           $value = $this->_getValue($row);        
           $_countryList = $this->options();           
           return isset($_countryList[$value]) ? $_countryList[$value] : false;
        }
}

1 Ответ

3 голосов
/ 21 февраля 2012

Я считаю, что проблема связана с вашим элементом <options>. Если вы переопределяете сетку заказов на продажу, переписывая ее, вы должны указать статическую функцию для опций. Я осмотрелся вокруг, и похоже, что тебе нужно изменить способ вызова.

Вместо использования элемента <options> вы можете попробовать элемент <filter>, например

<filter>Flipmedia_AddShippingCountryColumn_Adminhtml_Block_Widget_Grid_Column_Filter_Country</filter>

Обратите внимание на новый класс, он должен расширяться Mage_Adminhtml_Block_Widget_Grid_Column_Filter_Select примерно так ... проверьте magento svn в качестве ссылки.

class Mage_Adminhtml_Block_Catalog_Product_Edit_Tab_Super_Config_Grid_Filter_Inventory extends Mage_Adminhtml_Block_Widget_Grid_Column_Filter_Select
{

    protected function _getOptions()
    {
        // return an array of options
        return array(
                array(
                'value' =>  '',
                'label' =>  ''
        ));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...