// system.xml
<address translate="label,comment">
<label>Address</label>
<frontend_model>module/adminhtml_addmore</frontend_model>
<backend_model>adminhtml/system_config_backend_serialized_array</backend_model>
<sort_order>32</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>0</show_in_website>
<show_in_store>0</show_in_store>
</address>
<?php
//block
class Company_Module_Block_Adminhtml_Addmore extends Mage_Adminhtml_Block_System_Config_Form_Field_Array_Abstract
{
/**
* Prepare to render
*/
protected function _prepareToRender()
{
$this->addColumn('country', array(
'label' => Mage::helper('module')->__('Country'),
'style' => 'width:50px',
'renderer' => Mage::getModel('adminhtml/system_config_source_country')
));
$this->addColumn('address', array(
'label' => Mage::helper('module')->__('Address'),
'style' => 'width:100px',
));
$this->_addAfter = false;
$this->_addButtonLabel = Mage::helper('module')->__('Add More');
}
protected function _renderCellTemplate($columnName)
{
if (empty($this->_columns[$columnName])) {
throw new Exception('Wrong column name specified.');
}
$column = $this->_columns[$columnName];
$inputName = $this->getElement()->getName() . '[#{_id}][' . $columnName . ']';
$value = $this->getElement()->getValue();
if($columnName == 'country')
{
$rendered = '<select name="'.$inputName.'">';
$options = Mage::getResourceModel('directory/country_collection')->loadData()->toOptionArray(false);
foreach($options as $option)
{
$rendered .= '<option value="'.$option['value'].'">'.$option['label'].'</option>';
}
$rendered .= '</select>';
return $rendered;
}
else
return parent::_renderCellTemplate($columnName);
}
}
?>