Is there a way to add a custom form element to a Magento Adminhtml form without placing the custom element in the lib/Varian folder?
I\'ve tracked down the
The class Varien_Data_Form_Abstract has a method addType() where you can add new element types and their respective class names. To exploit this functionality you can copy the block Mage_Adminhtml_Block_Widget_Form to the local code pool and extend the method _getAdditionalElementTypes():
protected function _getAdditionalElementTypes()
{
$types = array(
'my_type' => 'Namespace_MyModule_Block_Widget_Form_Element_MyType',
);
return $types;
}
As the class Mage_Adminhtml_Block_Widget_Form is a base class for all the other form classes, unfortunately just rewriting the block in the config will not work.
EDIT: If you need the custom element types in just one form you could override the specific class and add the type there by overriding the method _getAdditionelElementTypes(). This would be a cleaner solution than copying an importend magento class to the local code pool.
EDIT2: Looking at Mage_Adminhtml_Block_Widget_Form::_setFieldset() there is another possibility: If the attribute has a value in frontend_input_renderer (e.g. mymodule/element_mytype) then a block with that name is loaded. See also Mage/Eav/Model/Entity/Attribute/Frontend/Abstract.php line 160. This should work without overriding any Magento classes.