Como adicionar o campo "Países permitidos" no formulário personalizado

8

Preciso criar um módulo personalizado que permita ao administrador criar zonas para diferentes países. Preciso adicionar o campo 'permitir país' (como no magento padrão System > Configuration > General > Countries Options) no meu formulário, onde o administrador pode selecionar os países para uma zona.

Eu só preciso adicionar um campo de seleção múltipla de países no meu formulário de administração de módulo personalizado.

Alguém pode me ajudar como fazer isso. Obrigado..

Jaimin Sutariya
fonte
desculpe esqueci de perguntar, você quer adicionar isso na sua seção de configuração personalizada ou no formulário de administração?
Shathish 28/10/2013
Preciso adicionar o campo no meu formulário de administração do módulo personalizado.
Jaimin Sutariya

Respostas:

6

Eu encontrei a solução.
Para adicionar uma lista suspensa de seleção múltipla de país no seu formulário, você precisa adicionar o código abaixo no seu Block/Adminhtml/ModuleName/Edit/Tab/Form.phparquivo.

$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
fonte
6

Para trazer o campo de países permitidos na sua configuração de módulo personalizado:

adicione o seguinte ao system.xml do seu módulo

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

na <fields>tag na sua seção personalizada.

Para adicioná-lo no formulário de administrador:

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

Nota:

  • Você precisa escrever a lógica para salvar os valores de seleção múltipla no banco de dados em saveAction ()

para exibir isso na grade do administrador:

consulte este link .

Shathish
fonte
Para salvar os valores de seleção múltipla, basta implodir os dados da postagem usando "," (por exemplo, $ countries = implode (",", $ selectedCountries)) e salvá-los no banco de dados. O Magento fará todo o possível para recuperá-lo na edição ou exibição da página.
Jaimin Sutariya
3
$fieldset->addField('country', 'select', array(  
        'name' => 'country',  
        'label' => 'Country',  
        'values' => Mage::getModel('adminhtml/system_config_source_country')->toOptionArray(),  
        ));
Dinesh Yadav
fonte