#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. когда я фильтрую данные, используя номер типа, он показывает неверный результат