Wie fügen Sie mehrere Registerkarten bei der Adminssektion eines benutzerdefinierten Moduls in Magento hinzu
Frage
Ich versuche ein benutzerdefiniertes Modul zu erstellen und es hat mehrere Registerkarten im Admin -Abschnitt wie Produktmodul.
Ausgabe i did not showing any tabs content from second tab ,like second tab content data is shows blank
.
Hier ist ein Code
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();
}
}
und Code von Form.PHP (Amit> CellPeople> Block> adminHtml> Liste> Registerkarte "Bearbeiten>).
<?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 -Formatdatei StoredEsails.php Code sind
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',
));
}
}
Bitte helfen Sie ....Nach Marius -Hilfe habe ich den Code der zweiten Formulardaten in StoredEsails.php geändert
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();
}
Die Daten sind jedoch in Feldern der zweiten Registerkarte leer..**Issue is that registry have data but in not showing fields**
Lösung
Stellen Sie sicher, dass der Block von der zweiten Registerkarte etwas zurückgibt.
Sie vermissen diesen Code am Ende von _prepareForm()
Methode:
$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.
Und ein anderes Tipp, aus dem Thema.
Erklären Sie nicht die Namen der Felder wie diesen. Sie könnten in Schwierigkeiten geraten.
'name' => 'vendor_h[name]',
Sie können dies oben hinzufügen _prepareForm
nach $form = new Varien_Data_Form();
$form->setFieldNameSuffix('vendor_h');
Dadurch werden die Namen der Felder aus verändert field_name
zu vendor_h[field_name]
.
In ähnlicher Weise können Sie mit dieser Zeile ein Präfix für die IDs des Feldes hinzufügen
$form->setHtmlIdPrefix('some_prefix_');
Dadurch wird die ID der Felder aus verändert field_id
zu some_prefix_field_id
.
Andere Tipps
In Ihrer zweiten Registerkarte rufen Sie nicht an
$this->setForm($form);
$form->setValues($cellvendor->getData());
return parent::_prepareForm();
Und wie Marius sagte, erklären Sie die Feldnamen nicht auf diese Weise.