改进这个问题: 在lib/Varien/Data/Form/Element文件夹中添加自己的文件是一种好习惯
接受的答案显示了如何扩展Varien表单元素,但如果要将其打包到自定义模块中,则无法使用.
在模块中扩展Varien表单元素的正确方法是什么?我希望一个简单的XML设置?
更新:
感谢Vinai的回复.虽然这确实有效,但我希望以某种方式扩展表单元素.我的扩展程序使用基本文件表单元素,允许管理员将文件上载到类别.所以,我不是自己直接将表单元素添加到fieldset中.
我想可以在后端检查我的类别块上的文件输入:Mage_Adminhtml_Block_Catalog_Category_Tab_Attributes,然后将表单元素更改为'file'到'mycompany_file' - 但这似乎是一种解决方法.
有没有更简单的方法?再次感谢Vinai.
Vin*_*nai 11
在Varien_Data_Form实例上,您可以指定自定义元素类型,如下所示:
$fieldset->addType('custom', 'Your_Module_Model_Form_Element_Custom');
Run Code Online (Sandbox Code Playgroud)
然后,添加您的元素
$fieldset->addField('the_name', 'custom', $optionsArray);
Run Code Online (Sandbox Code Playgroud)
如果您使用的是没有字段集的表单,您也可以在Varien_Data_Form实例上执行相同的操作.
编辑:由于问题中新的其他详细信息,请展开答案.
在课堂上Mage_Adminhtml_Block_Widget_Form::_setFieldset()有以下代码:
$rendererClass = $attribute->getFrontend()->getInputRendererClass();
if (!empty($rendererClass)) {
$fieldType = $inputType . '_' . $attribute->getAttributeCode();
$fieldset->addType($fieldType, $rendererClass);
}
Run Code Online (Sandbox Code Playgroud)
因此,属性frontend_input_renderer上的属性可用于指定自定义元素类.
此属性可以在表中找到catalog_eav_attribute,幸运的是,它没有为任何类别图像属性设置.
鉴于此,有几种方法可以应用customizaton.
一种选择是使用升级脚本简单地在表中设置元素类.如果entity_type_id和输入类型匹配,则
另一个将使用eav_entity_attribute_load_after事件的观察者并动态设置输入渲染器.
所以它更多地涉及到Magento中的常规类重写,但它很有可能.
| 归档时间: |
|
| 查看次数: |
3959 次 |
| 最近记录: |