Provincias en un formulario de contacto personalizado en Magento

Supongamos que necesitamos armar un formulario de contacto adicional al que ya provee Magento. Supongamos también que necesitamos utilizar datos de la plataforma.

En éste ejemplo vamos a ver cómo invocar las provincias/regiones en nuestro formulario.

La porción de código referente al dropdown que mostrará las regiones se vería, pensando en el skin default, de la siguiente manera:

<div class="input-box">
    <label for="state">< ?php echo Mage::helper('customcontacts')->__('State') ?> <span class="required">*</span></label><br />
    < ?php $_regions = Mage::getModel('directory/region')->getCollection();?>
    <select name="state" id="state" class="required-entry validate-select">
        <option value="">< ?php echo Mage::helper('customcontacts')->__('Select State') ?></option>
        < ?php foreach($_regions as $_region): ?>
            <option value="<?php echo $_region->getName(); ?>">< ?php echo $_region->getName(); ?></option>
        < ?php endforeach; ?>
    </select>
</div>

El resultado de éste código seria el siguiente.

Todas las regiones en un dropdown en Magento

Ahora bien, no buscamos todas las provincias, estados o regiones que tenemos disponibles, sino que vamos a filtrar según un país dado.

En el ejemplo, previo instalación de la extensión Dc_Argentineregions, vamos a buscar obtener sólo las provincias de Argentina.

Para esto, tenemos que hacer un pequeño cambio a nuestro código.

<div class="input-box">
    <label for="state"><?php echo Mage::helper('customcontacts')->__('State') ?> <span class="required">*</span></label><br />
    <?php $_regions = Mage::getModel('directory/region')->getResourceCollection()->addCountryFilter('AR')->load();?>
    <select name="state" id="state" class="required-entry validate-select">
        <option value=""><?php echo Mage::helper('customcontacts')->__('Select State') ?></option>
        <?php foreach($_regions as $_region): ?>
            <option value="<?php echo $_region->getName(); ?>"><?php echo $_region->getName(); ?></option>
        <?php endforeach; ?>
    </select>
</div>

Y el resultado será el siguiente:

Utilización de regiones de un país específico en Magento

Lo que hicimos fue cambiar el método de lectura del modulo y agregarle el método addCountryFilter pasándole el código del país que necesitamos.