comment ajouter plusieurs onglets dans adminsection d'un module personnalisé dans magento

magento.stackexchange https://magento.stackexchange.com/questions/14609

  •  16-10-2019
  •  | 
  •  

Question

Je suis en train de créer un module personnalisé et il dispose de plusieurs onglets dans la section admin comme module produit.

Numéro i did not showing any tabs content from second tab ,like second tab content data is shows blank.

entrer image description ici

entrer dans la description d'image ici Voici un code est

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();
    }
}

et le code de form.php (Amit> Cellpeople> Bloc> Adminhtml> Liste> Modifier> onglet)

<?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 fichier sous forme de code Storedetails.php sont

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',

    )); 
}
}

S'il vous plaît aider .... Après marius aide, j'ai le code de modify deuxième forme données 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();

}

mais les données sont vides dans les champs de deuxième tabs.Plese vérifier la sur l'image entrer dans la description d'image ici. **Issue is that registry have data but in not showing fields**

Était-ce utile?

La solution

Assurez-vous que le bloc de la deuxième onglet retourne quelque chose.
Il vous manque ce code à la fin de la méthode de _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.  

Et une autre astuce, hors sujet.
Ne pas déclarer les noms des champs comme celui-ci. Vous pourriez avoir des ennuis.

'name' => 'vendor_h[name]',

Vous pouvez ajouter ceci au début de _prepareForm après $form = new Varien_Data_Form();

$form->setFieldNameSuffix('vendor_h');

Cela transformera les noms des champs de field_name à vendor_h[field_name].
De la même manière, vous pouvez ajouter un préfixe pour les ids du champ avec cette ligne

$form->setHtmlIdPrefix('some_prefix_');

Cela transformera l'id des champs de field_id à some_prefix_field_id.

Autres conseils

dans votre deuxième onglet vous ne appelez pas

$this->setForm($form);
$form->setValues($cellvendor->getData());
return parent::_prepareForm();

et que Marius ladite Dont déclarer les noms des champs de cette manière.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top