Как добавить поле «Разрешенные страны» в пользовательскую форму

8

Мне нужно создать пользовательский модуль, который позволяет администратору создавать зоны для разных стран. Мне нужно добавить поле «разрешить страну» (как и в magento по умолчанию System > Configuration > General > Countries Options) в моей форме, где администратор может выбрать страны для зоны.

Мне просто нужно добавить поле для выбора страны в моей пользовательской форме администратора.

Может кто-нибудь помочь мне, как это сделать. Спасибо..

Джаймин Сутария
источник
извините забыл спросить, вы хотите добавить это в свой пользовательский раздел конфигурации или форму администратора?
Shathish
Мне нужно добавить поле в моей форме администратора модуля.
Джаймин Сутария

Ответы:

6

Я нашел решение.
Чтобы добавить в форму раскрывающийся список для выбора страны, вам необходимо добавить приведенный ниже код в свой Block/Adminhtml/ModuleName/Edit/Tab/Form.phpфайл.

$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

Чтобы ввести поле разрешенных стран в конфигурацию вашего пользовательского модуля:

добавьте следующее в system.xml вашего модуля

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

под <fields>тегом в вашем пользовательском разделе.

Чтобы добавить его в форму администратора:

в приложении / code / local / Yourmodulename / Block / Adminhtml / Yourmodulename / Изменить / 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,
));

нота:

  • Вы должны написать логику для сохранения значений множественного выбора в базе данных в saveAction ()

чтобы отобразить это в сетке администратора:

обратитесь по этой ссылке .

Shathish
источник
Чтобы сохранить значения множественного выбора, вам просто нужно сжать данные поста с помощью «,» (например, $ country = implode («,», $ selectedCountries)) и сохранить их в базе данных. Magento сделает все остальное, чтобы вернуть его на страницу редактирования или просмотра.
Джаймин Сутария
3
$fieldset->addField('country', 'select', array(  
        'name' => 'country',  
        'label' => 'Country',  
        'values' => Mage::getModel('adminhtml/system_config_source_country')->toOptionArray(),  
        ));
Динеш Ядав
источник