0

Magento バックエンド用のカスタム モジュールを作成しています。各列にフィルターを追加したい

この関数を処理するコードがどこにあるかについて、誰かが私を正しい方向に向けることができますか? コントローラーの一部であると仮定します

ご協力いただきありがとうございます。

このようなコラムを用意しました

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

}

protected function _prepareCollection()
{

    $model = Mage::getModel('CartAbandoned/tip');
            $collection = $model->getCollection();
        $this->setCollection($collection);
            return parent::_prepareCollection();
}


    $this->addColumn('id', array(
        'header'        => Mage::helper('CartAbandoned')->__('Id'),
        'align'         => 'right',
        'width'         => '50px',
        'type'          => 'number',
        'index'         => 'entity_id',
    ));

    $this->addColumn('E-Mail', array(
        'header'        => Mage::helper('CartAbandoned')->__('EMail'),
        'align'         => 'left',
        'width'         => '150px',
        'index'         => 'customer_email',
        'type'          => 'text',
        'truncate'      => 50,
        'escape'        => true,
   ));

    $this->addColumn('firstName', array(
        'header'        => Mage::helper('CartAbandoned')->__('firstName'),
        'align'         => 'left',
        'index'         => 'customer_firstname',
        'type'          => 'text',
        'escape'        => true,
   ));

    $this->addColumn('lastName', array(
        'header'        => Mage::helper('CartAbandoned')->__('lastName'),
        'align'         => 'left',
        'index'         => 'customer_lastname',
        'type'          => 'text',
        'escape'        => true,
      ));

$this->addColumn('total', array(
        'header'        => Mage::helper('CartAbandoned')->__('Total'),
        'align'         => 'left',
        'index'         => 'base_grand_total',
        'type'          => 'price',
        'escape'        => true,
 ));

$this->addColumn('quan', array(
        'header'        => Mage::helper('CartAbandoned')->__('Quantity'),
        'align'         => 'left',
        'index'         => 'items_qty',
        'type'          => 'number',
        'escape'        => true,
 ));

    $this->addColumn('cartcreatedtime', array(
        'header'        => Mage::helper('CartAbandoned')->__('cartcreatedtime'),
        'align'         => 'left',
        'index'         => 'created_at',
        'type'          => 'datetime',
        'escape'        => true,
 ));

   $this->addColumn('cartabandonedtime', array(
        'header'        => Mage::helper('CartAbandoned')->__('cartabandonedtime'),
        'align'         => 'left',
        'index'         => 'updated_at',
        'type'          => 'datetime',
        'escape'        => true,
));


     $this->addColumn('action',array(
            'header'    => Mage::helper('CartAbandoned')->__('Action'),
            'type'      => 'action',
            'getter'    => 'getId',
            'actions'   => array(
                array(
                    'caption' => Mage::helper('CartAbandoned')->__('View Products'),
                    'url'     => array('base'=>'*/*/edit'),
                    'field'   => 'id'
               )
           ),
           'filter'    => false,
           'sortable'  => false
    ));
4

2 に答える 2

1

まず、この用語「extends Mage_Adminhtml_Block_Widget_Grid」でプロジェクトを検索すると、たとえばこのクラスが見つかるはずですMage_Adminhtml_Block_Catalog_Category_Tab_Product

基本的に、注目する必要があるのは次の 2 つの方法です。

  • _prepareCollection()
  • _prepareColumns()

_prepareCollectionindexグリッドで使用され、Magento がメソッドに追加する各列のキーで表されるフィルターを適用するコレクションを準備します_prepareColumns()

以下の例は、上に貼り付けたクラスからのものです;)

$this->addColumn('E-Mail', array(
    'header'        => Mage::helper('CartAbandoned')->__('EMail'),
    'align'         => 'left',
    'width'         => '150px',
    'index'         => 'customer_email',
    'type'          => 'text',
    'truncate'      => 50,
    'escape'        => true,

));

コレクションには、呼び出されるフィールド/列が必要であり、同じ名前customer_emailに設定しているindexため、Magento は残りを処理する必要があります。

編集

protected function _prepareCollection()
{
    $collection = Mage::getModel('catalog/product')->getCollection()
        ->addAttributeToSelect('name')
        ->addAttributeToSelect('sku');

    $this->setCollection($collection);

    return parent::_prepareCollection();
}

protected function _prepareColumns()
{
    $this->addColumn('entity_id', array(
        'header'    => Mage::helper('catalog')->__('ID'),
        'sortable'  => true,
        'width'     => '60',
        'index'     => 'entity_id'
    ));
    $this->addColumn('name', array(
        'header'    => Mage::helper('catalog')->__('Name'),
        'index'     => 'name'
    ));
    $this->addColumn('sku', array(
        'header'    => Mage::helper('catalog')->__('SKU'),
        'width'     => '80',
        'index'     => 'sku'
    ));

    return parent::_prepareColumns();
}

この例では、sku、name、entity_id の 3 つの列のフィルター可能なコレクションを準備する方法を示します。

于 2012-09-26T19:54:39.663 に答える