以下是一些可以让您走上正轨的想法:
首先,在设置脚本中,创建您的实体:
$installer->addAttribute('catalog_product', 'frontend_display', array(
'label' => 'Display Test',
'type' => 'varchar',
'frontend_model' => 'Test_Module/Entity_Attribute_Frontend_CsvExport',
'input' => 'select',
'required' => 0,
'user_defined' => false,
'group' => 'General'
));
确保将 frontend_model 设置为您要使用的模型。前端模型影响属性的显示(在前端和 adminhtml 部分中)。
接下来,创建自己的类,并覆盖以下一个或两个函数:
public function getInputType()
{
return parent::getInputType();
}
public function getInputRendererClass()
{
return "Test_Module_Block_Adminhtml_Entity_Renderer_CsvExport";
}
第一个 ( getInputType()
) 用于将输入类型更改为烘焙输入类型(请参阅Varien_Data_Form_Element_*
选项)。但是,要设置您自己的渲染器类,请使用后一个函数 - getInputRendererClass()
。这就是我将在下面演示的内容:
public function getElementHtml()
{
return Mage::app()->getLayout()->createBlock('Test_Module/Adminhtml_ExportCsv', 'export')->toHtml();
}
在这里,为了清理,我正在实例化另一个块,因为元素本身没有显示按钮等的额外功能。
最后,创建这个文件:
class Test_Module_Block_Adminhtml_ExportCsv extends Mage_Adminhtml_Block_Widget
{
protected function _prepareLayout()
{
$button = $this->getLayout()->createBlock('adminhtml/widget_button')
->setData(array(
'label' => $this->__('Generate CSV'),
'onclick' => '',
'class' => 'ajax',
));
$this->setChild('generate', $button);
}
protected function _toHtml()
{
return $this->getChildHtml();
}
}
这不包括 AJAX 部分,但会让您非常接近让其余部分工作。