Cómo agregar el campo "Países permitidos" en forma personalizada


8

Necesito crear un módulo personalizado que permita al administrador crear zonas para diferentes países. Necesito agregar el campo 'permitir país' (como en el magento predeterminado System > Configuration > General > Countries Options) en mi formulario donde el administrador puede seleccionar los países para una zona.

Solo necesito agregar un campo de selección múltiple de países en el formulario de administración de mi módulo personalizado.

¿Alguien puede ayudarme a hacer esto? Gracias..


lo siento, olvidé preguntar, ¿quieres agregar esto en tu sección de configuración personalizada o formulario de administrador?
Shathish

Necesito agregar el campo en el formulario de administración de mi módulo personalizado.
Jaimin Sutariya

Respuestas:


6

Encontré la solución.
Para agregar un menú desplegable de selección múltiple de país en su formulario, debe agregar el siguiente código en su Block/Adminhtml/ModuleName/Edit/Tab/Form.phparchivo.

$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

Para incluir el campo de países permitidos en la configuración de su módulo personalizado:

agregue lo siguiente al system.xml de su 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>

debajo de la <fields>etiqueta en su sección personalizada.

Para agregarlo en el formulario de administrador:

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

  • Debe escribir la lógica para guardar los valores de selección múltiple en la base de datos en saveAction ()

para mostrar esto en la cuadrícula de administración:

Consulte este enlace .


Para guardar los valores de selección múltiple, solo necesita implosionar los datos de la publicación utilizando "," (por ejemplo, $ países = implosionar (",", $ selectedCountries)) y guardarlos en la base de datos. Magento hará todo lo posible para volver a editarlo o ver la página.
Jaimin Sutariya

3
$fieldset->addField('country', 'select', array(  
        'name' => 'country',  
        'label' => 'Country',  
        'values' => Mage::getModel('adminhtml/system_config_source_country')->toOptionArray(),  
        ));
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.