Tôi đã thêm một cột lưới tùy chỉnh bằng URL trường trong cơ sở dữ liệu tùy chỉnh:
$this->addColumn('url', array(
'header' => Mage::helper('companymodule')->__('Has Website'),
'align' => 'left',
'index' => 'url',
'renderer' => new Company_Module_Block_Adminhtml_Module_Grid_Renderer_HasUrl(),
'type' => 'options',
'options' => Mage::getSingleton('companymodule/hasurl')->getOptionArray(),
));
Và tạo kết xuất tùy chỉnh này:
class Company_Module_Block_Adminhtml_Module_Grid_Renderer_HasUrl extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
{
public function render(Varien_Object $row)
{
$value = trim((string)$row->getData($this->getColumn()->getIndex()));
if (empty($value)) {
return 'No';
} else {
return 'Yes';
}
}
}
Cũng như một mô hình tùy chỉnh cho bộ lọc dropdwon:
class Company_Module_Model_Hasurl extends Varien_Object
{
static public function getOptionArray()
{
return array(
'Yes' => Mage::helper('companymodule')->__('Yes'),
'No' => Mage::helper('companymodule')->__('No')
);
}
}
Điều này hoạt động tốt trừ khi bạn cố gắng để lọc. Tôi nghĩ rằng nó đang cố khớp giá trị 'Có' với giá trị của $row->getData($this->getColumn()->getIndex())
(trường URL trong bảng cơ sở dữ liệu.) Nhưng thay vì khớp chính giá trị của trường URL, tôi về cơ bản đang cố gắng lọc ((bool)empty($url))
để người dùng có thể lọc theo hoặc không mục cơ sở dữ liệu này có URL hay không.
Làm cách nào tôi có thể tạo logic tùy chỉnh cho bộ lọc như thế này?
'renderer' => Company_Module_Block_Adminhtml_Module_Grid_Renderer_HasUrl