Come aggiungere più schede in adminsection di un modulo personalizzato in Magento
Domanda
Sto cercando di creare un modulo personalizzato e avere più schede in sezione admin come modulo di prodotto.
Problema i did not showing any tabs content from second tab ,like second tab content data is shows blank
.
Ecco alcuni codice è
class Amit_Cellpeople_Block_Adminhtml_List_Edit_Tabs extends Mage_Adminhtml_Block_Widget_Tabs
{
public function __construct()
{
parent::__construct();
$this->setId('cellpeople_tabs');
$this->setDestElementId('edit_form');
$this->setTitle(Mage::helper('cellpeople')->__('Manage cellpeople'));
}
protected function _beforeToHtml()
{
$this->addTab('form_section', array(
'label' => Mage::helper('cellpeople')->__('cellpeople Information'),
'title' => Mage::helper('cellpeople')->__('cellpeople Information'),
'content' => $this->getLayout()->createBlock('cellpeople/adminhtml_list_edit_tab_form')->toHtml(),
));
$this->addTab('cellpeople_details',array(
'label'=>Mage::helper('cellpeople')->__('cellpeople Store Details'),
'title'=>Mage::helper('cellpeople')->__('cellpeople Store Details'),
'content'=>$this->getLayout()->createBlock('cellpeople/adminhtml_list_edit_tab_storedetails')->toHtml(),
));
return parent::_beforeToHtml();
}
}
e il codice di form.php (Amit> Cellpeople> Blocco> Adminhtml> List> Modifica> Scheda)
<?php
class Amit_Cellpeople_Block_Adminhtml_List_Edit_Tab_Form extends Mage_Adminhtml_Block_Widget_Form
{
protected function _prepareForm()
{
$cellpeople = Mage::registry('cellpeople_data');
$form = new Varien_Data_Form();
$fieldset = $form->addFieldset('cellpeople_form', array(
'legend' => Mage::helper('cellpeople')->__('cellpeople Registration')
));
$fieldset->addField('name', 'text', array(
'name' => 'cellpeople[name]',
'label' => Mage::helper('cellpeople')->__('Name'),
'required' => 'true',
));
$fieldset->addField('email', 'text', array(
'name' => 'cellpeople[email]',
'label' => Mage::helper('cellpeople')->__('Email'),
'required' => 'true',
));
$fieldset->addField('password', 'password', array(
'name' => 'cellpeople[password]',
'class' => 'required-entry',
'label' => Mage::helper('cellpeople')->__('Password'),
'required' => 'true',
));
$fieldset->addField('confirm_password', 'password', array(
'name' => 'cellpeople[confirm_password]',
'class' => 'required-entry',
'label' => Mage::helper('cellpeople')->__('Confirm Password'),
'required' => 'true',
));
$fieldset->addField('mobile_no', 'text', array(
'name' => 'cellpeople[mobile_no]',
'label' => Mage::helper('cellpeople')->__('Mobile No'),
'required' => 'true',
));
$fieldset->addField('phone_no', 'text', array(
'name' => 'cellpeople[phone_no]',
'label' => Mage::helper('cellpeople')->__('Phone No'),
));
$this->setForm($form);
$form->setValues($cellpeople->getData());
return parent::_prepareForm();
}
}
anthor di file sotto forma di codice Storedetails.php sono
class Amit_Cellpeople_Block_Adminhtml_List_Edit_Tab_Storedetails extends Mage_Adminhtml_Block_Widget_Form
{
protected function _prepareForm(){
$cellvendor = Mage::registry('vendordetails_data');// new registry for different module
$form = new Varien_Data_Form();
$fieldset = $form->addFieldset('vendor_form', array(
'legend' => Mage::helper('cellpeople')->__('Vendor deatsilsn')
));
$fieldset->addField('name_a', 'text', array(
'name' => 'vendor_h[name]',
'label' => Mage::helper('cellpeople')->__('Name'),
'required' => 'true',
));
$fieldset->addField('email', 'text', array(
'name' => 'vendor_h[email]',
'label' => Mage::helper('cellpeople')->__('Email'),
'required' => 'true',
));
}
}
Si prega di aiuto .... Dopo aiuto marius Ho codice di modifica della seconda forma dati in Storedetails.php
protected function _prepareForm(){
$cellvendor = Mage::registry('vendordetails_data');// new registry for different module
echo "<pre>";
print_r($cellvendor ->getData());
echo "</pre>";
$form = new Varien_Data_Form();
$fieldset = $form->addFieldset('vendor_form', array(
'legend' => Mage::helper('cellpeople')->__('Vendor deatsilsn')
));
$fieldset->addField('company', 'text', array(
'name' => 'company',
'label' => Mage::helper('cellpeople')->__('company'),
'required' => 'true',
));
$fieldset->addField('bank_ifsc', 'text', array(
'name' => 'bank_ifsc',
'label' => Mage::helper('cellpeople')->__('bank_ifsc'),
'required' => 'true',
));
$this->setForm($form);
$form->setValues($cellvendor>getData());
return parent::_prepareForm();
}
ma dati è vuoto nei campi di seconde tabs.Plese controllare il nell'immagine . **Issue is that registry have data but in not showing fields**
Soluzione
Assicurati che il blocco a partire dalla seconda rendimenti scheda qualcosa.
Vi manca il codice alla fine del metodo di _prepareForm()
:
$this->setForm($form); //set the form object to the block
return parent::_prepareForm(); //this is not mandatory but it is nice to keep a consistency.
E un altro suggerimento, fuori tema.
Non dichiarare i nomi dei campi come questo. Si potrebbe finire nei guai.
'name' => 'vendor_h[name]',
Puoi aggiungere questo nella parte superiore del _prepareForm
dopo $form = new Varien_Data_Form();
$form->setFieldNameSuffix('vendor_h');
Questo trasformerà i nomi dei campi da field_name
a vendor_h[field_name]
.
In modo simile è possibile aggiungere un prefisso per gli ID del campo con questa linea
$form->setHtmlIdPrefix('some_prefix_');
Questo trasformerà l'id dei campi da field_id
a some_prefix_field_id
.
Altri suggerimenti
nella vostra seconda scheda tu non chiamata ??p>
$this->setForm($form);
$form->setValues($cellvendor->getData());
return parent::_prepareForm();
e, come ha detto Marius Non dichiarare i nomi dei campi in questo modo.