Magento 使用事件观察器在订单网格中添加电话号码

Magento Add telephone no in order grid using event observer

我想添加电话phone 订单中使用的客户数量 -> 运输或计费。按顺序排列。我可以在网格中添加标题,但我不知道如何获得 phone 否。用于此的事件是 sales_order_grid_collection_load_before. 即使我无法使用它获取订单 ID。 这是我的代码。

config.xml

<?xml version="1.0"?>
<config>
  <modules>
    <Elavarasan_OrderGrid>
      <version>0.1.0</version>
    </Elavarasan_OrderGrid>
  </modules>
  <global>
    <helpers>
      <ordergrid>
        <class>Elavarasan_OrderGrid_Helper</class>
      </ordergrid>
    </helpers>
    <models>
      <ordergrid>
        <class>Elavarasan_OrderGrid_Model</class>
        <resourceModel>ordergrid_mysql4</resourceModel>
      </ordergrid>
    </models>
    <events>
      <core_block_abstract_to_html_before> <!-- identifier of the event we want to catch -->
        <observers>
          <core_block_abstract_to_html_before_handler> <!-- identifier of the event handler -->
            <type>model</type> <!-- class method call type; valid are model, object and singleton -->
            <class>ordergrid/observer</class> <!-- observers class alias -->
            <method>getGrid</method>  <!-- observer's method to be called -->
            <args></args> <!-- additional arguments passed to observer -->
          </core_block_abstract_to_html_before_handler>
        </observers>
      </core_block_abstract_to_html_before>

      <sales_order_grid_collection_load_before> <!-- identifier of the event we want to catch -->
        <observers>
          <sales_order_grid_collection_load_before_handler> <!-- identifier of the event handler -->
            <type>model</type> <!-- class method call type; valid are model, object and singleton -->
            <class>ordergrid/observer</class> <!-- observers class alias -->
            <method>addPhoneNo</method>  <!-- observer's method to be called -->
            <args></args> <!-- additional arguments passed to observer -->
          </sales_order_grid_collection_load_before_handler>
        </observers>
      </sales_order_grid_collection_load_before>
    </events>
  </global>
</config> 

Observer.php

<?php
class Elavarasan_OrderGrid_Model_Observer
{

            public function getGrid(Varien_Event_Observer $observer)
            {
                $block = $observer->getEvent()->getBlock();
                if ($block->getId() == 'sales_order_grid') {
                    $block->addColumnAfter(
                            'telephone',
                            array(
                                    'header'   => Mage::helper('sales')->__('Telephone No'),
                                    'align'    => 'left',
                                    'type'     => 'options',
                                    'options'  => $paymentMethods,
                                    'index'    => 'telephone',
                                    'filter_index' => 'telephone.telephone'
                            ),
                            'shipping_name'
                    );

                    //$block->sortColumnsByOrder();

                }

            }

            public function addPhoneNo(Varien_Event_Observer $observer)
            {
              echo $phone = $observer->getOrder()->getCustomer()->getPrimaryBillingAddress()->getTelephone();

            }

}

请大家帮帮我..

希望本文link对您有所帮助。 http://www.ecomdev.org/2010/07/27/adding-order-attribute-to-orders-grid-in-magento-1-4-1.html