So fügen Sie das Feld "Zulässige Länder" in benutzerdefinierter Form hinzu

8

Ich muss ein benutzerdefiniertes Modul erstellen, mit dem der Administrator Zonen für verschiedene Länder erstellen kann. Ich muss System > Configuration > General > Countries Optionsin meinem Formular das Feld "Land zulassen" hinzufügen (genau wie im Standard-Magento ), in dem der Administrator die Länder für eine Zone auswählen kann.

Ich muss nur ein Länder-Mehrfachauswahlfeld in mein benutzerdefiniertes Modulverwaltungsformular einfügen.

Kann mir jemand helfen, wie das geht. Vielen Dank..

Jaimin Sutariya
quelle
Entschuldigung, ich habe vergessen zu fragen, ob Sie dies in Ihrem benutzerdefinierten Konfigurationsbereich oder in Ihrem Administrationsformular hinzufügen möchten.
Shathish
Ich muss das Feld in meinem benutzerdefinierten Modulverwaltungsformular hinzufügen.
Jaimin Sutariya

Antworten:

6

Ich habe die Lösung gefunden.
Um ein Länder-Dropdown-Menü mit Mehrfachauswahl in Ihr Formular aufzunehmen, müssen Sie den folgenden Code in Ihre Block/Adminhtml/ModuleName/Edit/Tab/Form.phpDatei einfügen .

$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,
        ));
Jaimin Sutariya
quelle
6

So rufen Sie das Feld "Zulässige Länder" in Ihrer benutzerdefinierten Modulkonfiguration auf:

Fügen Sie der system.xml Ihres Moduls Folgendes hinzu

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

unter <fields>Tag in Ihrem benutzerdefinierten Bereich.

So fügen Sie es im Administrationsformular hinzu:

in app / code / local / Yourmodulenname / Block / Adminhtml / Yourmodulenname / 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,
));

Hinweis:

  • Sie müssen Logik schreiben, um die Mehrfachauswahlwerte in der Datenbank in saveAction () zu speichern.

So zeigen Sie dies im Admin-Raster an:

Verweisen Sie auf diesen Link .

Shathish
quelle
Um die Multiselect-Werte zu speichern, müssen Sie nur die Post-Daten mit "," (z. B. $ country = implode (",", $ selectedCountries)) implodieren und in der Datenbank speichern. Magento wird alles andere tun, um es wieder auf die Bearbeitungs- oder Ansichtsseite zu bringen.
Jaimin Sutariya
3
$fieldset->addField('country', 'select', array(  
        'name' => 'country',  
        'label' => 'Country',  
        'values' => Mage::getModel('adminhtml/system_config_source_country')->toOptionArray(),  
        ));
Dinesh Yadav
quelle