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
-
12-12-2019 - |
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é.
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 $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
Le tableau dit que la valeur de add_type vient comme $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