Câu trả lời của mageUz thực sự tốt và đơn giản.
Tôi đã gặp một số vấn đề với cột "hành động" hiển thị theo hàng tổng nên tôi đã xem xét thêm một chút. Vì vậy, đây là ...
1. Ẩn Cột Hành động theo tổng số và hơn thế nữa
Do có thể là một lỗi trong widget/grid.phtml
các 'is_system'
tham số không lấy được xem xét, vì vậy nó cho thấy các liên kết hành động trong hàng tổng. Để giải quyết nó, chỉ cần thêm 'totals_label' => '',
vào khai báo cột hành động của bạn.
Các 'totals_label' => 'label',
tham số có thể được sử dụng trong tất cả các cột và nó sẽ ghi đè lên tổng số tế bào ngay cả khi nó đề ra.
Điều đó nói rằng bạn có thể bỏ qua $fields['entity_id']='Totals';
dòng câu trả lời của mageUz, đi đến cột 'entity_id' (hoặc bất kỳ cột nào bạn chọn) và thêm
'totals_label' => $this->__('Total'),
(+ Hỗ trợ đa ngôn ngữ)
2. Kết quả tương tự, cách tiếp cận hơi khác nhau
Trong khối lưới của bạn, thêm chức năng được bảo vệ _prepareTotals (cột $). Sau đó gọi nó trong hàm _prepareCollection () với các hàng bạn muốn dưới dạng tổng dấu phẩy được phân tách. Để rõ ràng hơn, Any / Grid.php của bạn sẽ trông giống như thế này
protected function _prepareCollection(){
$collection = Mage::getResourceModel('mymodule/mymodel_collection');
$this->setCollection($collection);
$this->_prepareTotals('price,special_price'); //Add this Line with all the columns you want to have in totals bar
return parent::_prepareCollection();
}
//Add following function
protected function _prepareTotals($columns = null){
$columns=explode(',',$columns);
if(!$columns){
return;
}
$this->_countTotals = true;
$totals = new Varien_Object();
$fields = array();
foreach($columns as $column){
$fields[$column] = 0;
}
foreach ($this->getCollection() as $item) {
foreach($fields as $field=>$value){
$fields[$field]+=$item->getData($field);
}
}
$totals->setData($fields);
$this->setTotals($totals);
return;
}
protected function _prepareColumns(){
$this->addColumn('entity_id', array(
'index' => 'entity_id',
'header' => $this->__('ID'),
'totals_label' => $this->__('Total'), //Add this line to show "Total" in the beginning of the row
));
$this->addColumn('name', array(
'index' => 'name',
'header' => $this->__('Name'),
));
$this->addColumn('price', array(
'index' => 'price',
'header' => $this->__('Price'),
'type' => 'currency',
'currency_code' => $this->_getStore()->getBaseCurrency()->getCode(),
));
$this->addColumn('special_price', array(
'index' => 'special_price',
'header' => $this->__('Special Price'),
'type' => 'currency',
'currency_code' => $this->_getStore()->getBaseCurrency()->getCode(),
));
$this->addColumn('action',array(
'header' => $this->__('Action'),
'width' => '100',
'type' => 'action',
'getter' => 'getId',
'actions' => array(array(
'caption' => $this->__('edit'),
'url' => array('base' => '*/*/edit'),
'field' => 'product_id',
)),
'filter' => false,
'sortable' => false,
'is_system' => true,
'totals_label' => '' //Add this line to stop the action showing
));
return parent::_prepareColumns();
}