Skip to content

Instantly share code, notes, and snippets.

@herveguetin
Last active August 29, 2015 14:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save herveguetin/507c47a49b554f379377 to your computer and use it in GitHub Desktop.
Save herveguetin/507c47a49b554f379377 to your computer and use it in GitHub Desktop.
Enrich Magento product edit admin form with own model data
<?php
/**
* In some Mage_Adminhtml_Block_Catalog_Form class...
*/
protected function _prepareForm()
{
$formDataObject = new Varien_Object() // Your logic to get original data for your form
$form = new Varien_Data_Form();
$fieldset = $form->addFieldset('my_fieldset', array('legend'=>Mage::helper('my_helper')->__('My Legend'), 'class'=>'fieldset-wide'));
$fieldset->addField('my_form_element_id', 'text', array(
'name' => 'my_form_element_id',
'label' => Mage::helper('my_helper')->__('Some Label'),
'title' => Mage::helper('my_helper')->__('Some Title'),
));
$form = $this->_updateFormData($formDataObject, $form);
$form->setValues($formDataObject->getData());
$this->setForm($form);
Mage::dispatchEvent('my_nice_event_name', array('form' => $form));
return parent::_prepareForm();
}
/**
* Update / enrich form with your own model data
*
* @param Varien_Object $formDataObject // Data of the form as a Varien_Object
* @param Varien_Data_Form $form
* @return Varien_Data_Form
*/
protected function _updateFormData($formDataObject, $form)
{
if($formDataObject) {
$model = new Varien_Object() // Your logic to get your model for your business use;
$model->setAttributeDefaultValue('my_fake_attribute_code', 'my_default_value');
// Prepare data for displaying "Use default" checkbox
if($model->getStoreId() == Mage_Core_Model_App::ADMIN_STORE_ID) {
$model->setStoreId($formDataObject->getStoreId());
}
$form->setDataObject($model);
// If model instance has data, update form original data
if($model->hasData()) {
$formDataObject->setData('my_form_element_id', $model->getData('my_data_key'));
}
}
// Create dummy attribute instance for displaying "Use default" checkbox
$attribute = Mage::getResourceModel('catalog/eav_attribute');
$attribute->setData('is_global', false);
$attribute->setAttributeCode('my_fake_attribute_code');
$form->getElement('my_form_element_id')->setEntityAttribute($attribute);
return $form;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment