【问题标题】:Magento - custom admin grid issueMagento - 自定义管理网格问题
【发布时间】:2012-06-14 10:49:06
【问题描述】:

我一直在为 magento 后端编写一个自定义的缺货模块,我有批量操作、导出等工作。但是,当我执行任何类型的搜索功能(例如在产品名称字段中输入内容)并确实尝试更改为下一页(或在该字段中输入特定页面)或页面上出现多少产品时。它会立即将我重定向到仪表板。

谁能指出我处理这个函数的代码在哪里的正确方向?我将假设它是控制器的一部分,但我一直在寻找最后一个小时,现在是时候寻求帮助了!

感谢您提供的任何帮助!

准备列功能:

protected function _prepareColumns()
{
    $this->addColumn('sku',
        array(
            'header'=> Mage::helper('catalog')->__('SKU'),
            'width' => '80px',
            'index' => 'sku',
    ));

    $sets = Mage::getResourceModel('eav/entity_attribute_set_collection')
        ->setEntityTypeFilter(Mage::getModel('catalog/product')->getResource()->getTypeId())
        ->load()
        ->toOptionHash();

    $this->addColumn('set_name',
        array(
            'header'=> Mage::helper('catalog')->__('Attrib. Set Name'),
            'width' => '60px',
            'index' => 'attribute_set_id',
            'type'  => 'options',
            'options' => $sets,
    ));

    $store = $this->_getStore();
    if ($store->getId()) {
        $this->addColumn('custom_name',
            array(
                'header'=> Mage::helper('catalog')->__('Name in %s', $store->getName()),
                'index' => 'custom_name',
        ));
    }

    $this->addColumn('name',
        array(
            'header'=> Mage::helper('catalog')->__('Name'),
            'index' => 'name',
    ));

    $this->addColumn('stock_status',
        array(
            'header'=> 'Availability',
            'width' => '60px',
            'index' => 'stock_status',
            'type'  => 'options',
            'options' => array('1'=>'In stock','0'=>'Out of stock'),
    )); 

    $this->addColumn('custom_stock_status',
    array(
        'header' => 'Custom Stock Status',
        'width' => '60px',
        'index' => 'custom_stock_status',
        'type' => 'options',
        'editable' => 'true',));

     $this->addColumn('eol',
     array(
        'header'=> Mage::helper('catalog')->__('EoL'),
        'width' => '20px',
        'type'  => 'checkbox',
        'index' => 'eol',
        'onclick'   => 'this.value = this.checked ? 1 : 0;',
        'values'    => array('1','2'),
        'editable' => 'true',
    ));

    $store = $this->_getStore();
    $this->addColumn('qty',
        array(
            'header'=> Mage::helper('catalog')->__('Qty'),
            'width' => '25px',
            'type'  => 'number',
            'index' => 'qty',
    ));

    $this->addColumn('status',
        array(
            'header'=> Mage::helper('catalog')->__('Status'),
            'width' => '70px',
            'index' => 'status',
            'type'  => 'options',
            'options' => Mage::getSingleton('catalog/product_status')->getOptionArray(),
    ));

    $this->addColumn('action',
        array(
            'header'    => Mage::helper('catalog')->__('Action'),
            'width'     => '90px',
            'type'      => 'action',
            'getter'     => 'getId',
            'actions'   => array(
                array(
                    'caption' => Mage::helper('catalog')->__('Edit Product'),
                    'url'     => array(
                        'base'=>'store_admin/catalog_product/edit',
                        'params'=>array('store'=>$this->getRequest()->getParam('store'))
                    ),
                    'field'   => 'id'
                )
            ),
            'filter'    => false,
            'sortable'  => false,
            'index'     => 'stores',
    ));

    $this->addRssList('rss/catalog/notifystock', Mage::helper('catalog')->__('Notify Low Stock RSS'));

    return parent::_prepareColumns();
}

此外,我正在尝试按属性过滤,我需要两次过滤相同的属性才能输出 null 和 no 属性,但不是。有没有办法做到这一点?

->addAttributeToFilter('eol', array('null' => true), 'left')
->addAttributeToFilter('eol', array('No' => true));

这是我目前正在尝试做的,但是,它丝毫不起作用。两者都可以单独工作!

【问题讨论】:

    标签: php magento attributes grid admin


    【解决方案1】:
    Mage_Adminhtml_Block_Widget_Grid  
    

    有方法

    _addColumnFilterToCollection($column)
    

    您可以覆盖它以实现自定义网格的过滤逻辑。

    【讨论】:

      【解决方案2】:

      对于 CE 1.6.2,这对我有用:

      1) 将app/code/core/Mage/Adminhtml/Block/Catalog/Product/Grid.php 复制到app/code/local/Mage/Adminhtml/Block/Catalog/Product/Grid.php

      2) 在app/code/local/Mage/Adminhtml/Block/Catalog/Product/Grid.php 内部/下方_prepareCollection() 中添加以下代码

      ->addAttributeToSelect('type_id'); 之后和if (Mage::helper('catalog')->isModuleEnabled('Mage_CatalogInventory')) { 之前

      代码:

      $collection->joinTable( 'cataloginventory/stock_item',
      'product_id=entity_id', array("stock_status" => "is_in_stock") )
      ->addAttributeToSelect('stock_status');
      

      3) 在第 180 行之后添加以下内容 'index' => 'price', ));

      代码:

      $this->addColumn('stock_status',
          array(
              'header'=> 'Stock Status', // this is the title of the column
              'width' => '60px',         // this is the width of the column
              'index' => 'stock_status',
              'type'  => 'options',
              'options' => array('1'=>'In Stock','0'=>'Out Of Stock'),
          )
      );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多