champ admin, sélectionnez la valeur par défaut de la boîte de données de la base de données lors de la modification

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

Question

J'ai un problème lors de la modification de mon module d'administration personnalisé.

Le module personnalisé fonctionne bien, mais lors de l'édition, je dois afficher la valeur de la zone de sélection sélectionnée dans les enregistrements de la base de données,

J'ai deux valeurs et dans la base de données, le type de données est une énumération.les valeurs sont

1 => image 2 => vidéo

Lors de l'édition, je dois afficher une image ou une vidéo en fonction de la valeur de la base de données.mais je n'obtiens pas de résultat correct, voici mon code.

$fieldset->addField('add_type', 'select', array(
          'label'     => Mage::helper('advertisement')->__('Media'),
          'name'      => 'add_type',
          'onchange' => 'checkSelectedItem(this.value)',
          'value'  => '',
          'values' => array(array('value'=>'0','label'=>'Select Type'),
                            array('value'=>'1','label'=>'Image'),
                            array('value'=>'2','label'=>'Video'),
                       ),
);

J'ai essayé ça aussi

$recordId = Mage::registry('storeadvertisement_data')->getData();
        $selectVal = Mage::getModel('advertisement/advertisement')->load($recordId['id'])->getData('add_type');
  $fieldset->addField('add_type', 'select', array(
          'label'     => Mage::helper('advertisement')->__('Media'),
          'name'      => 'add_type',
          'onchange'  => 'checkSelectedItem(this.value)',
          'value'     => $selectVal,
          'values'    => array(array('value'=>'0','label'=>'Select Type'),
                            array('value'=>'1','label'=>'Image'),
                            array('value'=>'2','label'=>'Video'),
                       ),
);

Mais cela n'a pas aidé.

Était-ce utile?

La solution

A la fin de votre formulaire avant d'appeler return parent::_prepareForm();:

$form->addValues(Mage::registry('storeadvertisement_data')->getData());

Si votre variable de formulaire n'est pas nommée $form, changez également le nom de la variable dans le code ci-dessus.

Autres conseils

J'ai répondu. J'ai fait une erreur tout en obtenant la valeur de la base de données et en ajoutant le nom des options de nom de champ, Actuellement, je reçois des valeurs de la base de données comme suit

Array
        (
            [id] => 29
            [store_id] => 8
            [add_type] => video
            [add_name] => beckmanpro 2
            [description] => seccond add for beckmanpro 
            [status] => active
            [url] => //www.youtube.com/embed/xVXZzm_bjHE
            [link] => http://canon.com
            [created_at] => 2014-08-25 11:14:09
            [updated_at] => 2014-08-25 11:14:09
        )

Vérifiez la valeur de add_type dans la matrice ci-dessus. et mon code précédent comme suit.

$fieldset->addField('add_type', 'select', array(
        'label' => Mage::helper('advertisement')->__('Media'),
        'title' => Mage::helper('advertisement')->__('Media'),
        'name' => 'add_type',
        'required' => true,
        'options' => array(
            '0' => 'Select Type',
            '1' => 'Image',
            '2' => 'Video',
        ),
    ));

vérifier options dans le code ci-dessus.L'erreur est faite ici,

Le tableau dit que la valeur de add_type vient comme vidéo , mais j'ajoute la valeur sous 0, 1, 2 pour chacun, donc je modifie mon code comme suit

$fieldset->addField('add_type', 'select', array(
          'label'     => Mage::helper('advertisement')->__('Media'),
          'name'      => 'add_type',
          'options' => array(
            '0' => 'Select Type',
            'image' => 'Image',
            'video' => 'Video',
        )
);

Merci à tous.et merci @marius et @ r.s

essayer

  $fieldset->addField('add_type', 'select', array(
        'label' => Mage::helper('advertisement')->__('Media'),
        'title' => Mage::helper('advertisement')->__('Media'),
        'name' => 'add_type',
        'required' => true,
        'options' => array(
            '0' => 'Select Type',
            '1' => 'Image',
            '2' => 'Video',
        ),
        'after_element_html' => ' ' . Mage::helper('adminhtml')->__('[GLOBAL]'),
    ));

alors

 if ( Mage::getSingleton('adminhtml/session')->get<Module>Data() ){
      $form->setValues(Mage::getSingleton('adminhtml/session')->get<Module>Data());
      Mage::getSingleton('adminhtml/session')->set<Module>Data(null);
 } elseif ( Mage::registry('<module>_data') ) {
     $form->setValues(Mage::registry('<module>_data')->getData());
 }

Essayez de nettoyer le cache

voir Magento - Wiki - Module personnalisé avec table de base de données personnalisée

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