Фильтр продукта показывает неверный результат admin product grid magento

#magento #magento-1.9

#magento #magento-1.9

Вопрос:

Я использую Magento Enterprise Edition 1.14.3. Я добавил пользовательский столбец simple_count для подсчета общего количества продуктов в настраиваемом продукте. и создал пользовательский атрибут simple_count в admin. Фильтр работает нормально, если я использую 'type' => 'text' , но когда я использую 'type' => 'number' , фильтр показывает неверный результат. Пожалуйста, посмотрите код ниже:

 $this->addColumn('simple_count', array(
          'header'    => Mage::helper('catalog')->__('Simple Count'),
          'align'     =>'right',
          'width' => '100px',
          'type'  => 'number',           
          'index'     => 'simple_count',
          'renderer' => 'Wcl_Employee_Block_Adminhtml_Employee_Renderer_Simplecount',         
      ));
  

Для раздела рендеринга:

 class Wcl_Employee_Block_Adminhtml_Employee_Renderer_Simplecount extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract{

    public function render(Varien_Object $row)
    {
            $entityId = $row['entity_id'];
                $product = Mage::getModel('catalog/product')->load($entityId);
                $productType = $product->getTypeID(); 
                $sum = 0;
                if($productType == 'configurable'):     
            $childProducts = Mage::getModel('catalog/product_type_configurable')->getUsedProducts(null,$product);
                        //echo "Simple Count:".count($childProducts);
                        //$sum =0;
                        foreach($childProducts as $itempro):
                        $productdata = Mage::getModel('catalog/product')->load($itempro->getId());
                        $stock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($productdata)->getQty();
                        $sum = $sum   $stock;
                        endforeach;
                        $product->setSimpleCount($sum); $product->save();
                        if($sum == 0):
                          return '0';
                        else:
                return $sum;
                        endif;
                else:
                        $product->setSimpleCount($sum); $product->save();   
                        return '0';     
                endif;   
   }     
}
  

Если кто-нибудь знает об этом, пожалуйста, избавьте меня от этого.
Спасибо

Ответ №1:

     you can use filter_condition_callback like this 
    $this->addColumn('simple_count', array(
              'header'    => Mage::helper('catalog')->__('Simple Count'),
              'align'     =>'right',
              'width' => '100px',
              'type'  => 'number',           
              'index'     => 'simple_count',
              'renderer' =>      'Wcl_Employee_Block_Adminhtml_Employee_Renderer_Simplecount', 
              'filter_condition_callback' => array($this, '_filterValidityCondition'),            
          ));

    protected function _filterValidityCondition($collection, $column) {
            if (!$value = $column->getFilter()->getValue()) {
                return;
            }
            if (isset($value['from']) amp;amp; $value['from']) {

$this->getCollection()->addFieldToFilter($column->getIndex(), array('gteq' => $from));
            }
            if (isset($value['to']) amp;amp; $value['to']) {

$this->getCollection()->addFieldToFilter($column->getIndex(), array('leeq' => $to));
            }
        }
  

Комментарии:

1. Нет, все же проблема существует, когда я беру от 20 до 30, тогда и это показывает другие результаты.

2. у кого-нибудь есть какие-либо идеи, пожалуйста, предложите проблему

3. когда я фильтрую данные, используя номер типа, он показывает неверный результат