Comment ajouter le champ "Pays autorisés" dans un formulaire personnalisé


8

J'ai besoin de créer un module personnalisé qui permet à l'administrateur de créer des zones pour différents pays. Je dois ajouter le champ «autoriser le pays» (comme dans Magento par défaut System > Configuration > General > Countries Options) dans mon formulaire où l'administrateur peut sélectionner les pays pour une zone.

J'ai juste besoin d'ajouter un champ de sélection multiple de pays dans mon formulaire d'administration de module personnalisé.

Quelqu'un peut-il m'aider à faire cela? Merci..


désolé oublié de demander, vous voulez ajouter ceci dans votre section de configuration personnalisée ou formulaire d'administration?
Shathish

Je dois ajouter le champ dans mon formulaire d'administration de module personnalisé.
Jaimin Sutariya

Réponses:


6

J'ai trouvé la solution.
Pour ajouter une liste déroulante de sélection multiple de pays dans votre formulaire, vous devez ajouter le code ci-dessous dans votre Block/Adminhtml/ModuleName/Edit/Tab/Form.phpfichier.

$countryList = Mage::getModel('directory/country')->getResourceCollection()->loadByStore()->toOptionArray(true);
$fieldset->addField('countries', 'multiselect', array(
            'name'      => 'countries[]',
            'label'     => Mage::helper('zones')->__('Countries'),
            'title'     => Mage::helper('zones')->__('Countries'),
            'required'  => true,
            'values'    => $countryList,
        ));

6

Pour insérer le champ des pays autorisés dans votre configuration de module personnalisé:

ajoutez ce qui suit au system.xml de votre module

<sallowspecific translate="label">
    <label>Ship to Applicable Countries</label>
    <frontend_type>select</frontend_type>
    <sort_order>90</sort_order>
    <frontend_class>shipping-applicable-country</frontend_class>
    <source_model>adminhtml/system_config_source_shipping_allspecificcountries</source_model>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <show_in_store>0</show_in_store>
</sallowspecific>
<specificcountry translate="label">
    <label>Ship to Specific Countries</label>
    <frontend_type>multiselect</frontend_type>
    <sort_order>91</sort_order>
    <source_model>adminhtml/system_config_source_country</source_model>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <show_in_store>0</show_in_store>
    <can_be_empty>1</can_be_empty>
</specificcountry>

sous la <fields>balise dans votre section personnalisée.

Pour l'ajouter dans le formulaire d'administration:

dans app / code / local / Yourmodulename / Block / Adminhtml / Yourmodulename / Edit / Tab / Form.php

$countryList = Mage::getModel('directory/country')->getResourceCollection()->loadByStore()->toOptionArray(true);
$fieldset->addField('allowed_countries', 'multiselect', array( /* "allowed_countries" is the column name in your custom table to store these values */
    'name'      => 'countries[]',
    'label'     => Mage::helper('yourmodulename')->__('Allowed Countries'),
    'title'     => Mage::helper('yourmodulename')->__('Allowed Countries'),
    'required'  => true, /* only if it is required */
    'values'    => $countryList,
));

Remarque:

  • Vous devez écrire une logique pour enregistrer les valeurs multisélection dans la base de données dans saveAction ()

pour afficher cela dans la grille d'administration:

référez ce lien .


Pour enregistrer les valeurs multisélection, il vous suffit d'imploser les données de publication à l'aide de "," (par exemple. $ Countries = implode (",", $ selectedCountries)) et de les enregistrer dans la base de données. Magento fera tout le reste pour le récupérer sur la page d'édition ou de visualisation.
Jaimin Sutariya

3
$fieldset->addField('country', 'select', array(  
        'name' => 'country',  
        'label' => 'Country',  
        'values' => Mage::getModel('adminhtml/system_config_source_country')->toOptionArray(),  
        ));
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.