如何以自定义形式添加“允许的国家”字段


8

我需要创建一个自定义模块,该模块允许管理员为不同国家/地区创建区域。我需要System > Configuration > General > Countries Options在表单中添加“允许国家/地区”字段(就像默认的magento一样),管理员可以在其中选择区域的国家/地区。

我只需要在自定义模块管理表单中添加一个国家/地区多重选择字段即可。

谁能帮我怎么做。谢谢..


抱歉忘了问,您想在自定义配置部分或管理表单中添加此内容吗?
2013年

我需要在自定义模块管理表单中添加该字段。
Jaimin Sutariya

Answers:


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>您的自定义部分中的标签下。

要将其添加到管理员表单中:

在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,
));

注意:

  • 您必须编写逻辑以将multiselect值保存在saveAction()中的数据库中

将其显示在管理网格中:

请参阅此链接


要保存多选值,您只需要使用“,”内插帖子数据(例如$ countries = implode(“,”,$ selectedCountries))并将其保存在数据库中。Magento将进行其他所有操作,以使其恢复到编辑或查看页面。
Jaimin Sutariya

3
$fieldset->addField('country', 'select', array(  
        'name' => 'country',  
        'label' => 'Country',  
        'values' => Mage::getModel('adminhtml/system_config_source_country')->toOptionArray(),  
        ));
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.