创建一个国家的下拉菜单(magento2)

  当我第一次需要访问Magento中的一组国家时,我认为它可以像所有其他数据收集一样工作,但是很震惊地发现情况并非如此。Magento不是将国家数据存储在数据库中,而是将国家数据存储在XML文件中,并在每个请求中加载它。幸运的是,我们可以使用一些简单的函数来访问Magento中的国家/地区名称和代码。

在Magento中获取一组国家/地区名称/代码:

 1 <?php
 2 
 3     $countryList = Mage::getResourceModel('directory/country_collection')
 4                     ->loadData()
 5                     ->toOptionArray(false);
 6     
 7     echo '<pre>';
 8     print_r( $countryList);
 9     exit(''); ?>

上面的代码将打印出一个包含Magento已知的国家代码和国家名称的数组。

 

下降和国家信息

开发人员在Magento中访问国家/地区名称的最常见原因是创建一个下拉菜单。有几种方法可以实现这一点,它们根据您是在管理员还是在前端而有所不同。

在Magento的前端创建一个国家

将下面的代码添加到Magento前端的任何模板文件中,您将得到一个下拉框,使用国家名称作为标签,国家代码作为值。

<?php $_countries = Mage::getResourceModel('directory/country_collection')
                                    ->loadData()
                                    ->toOptionArray(false) ?>
<?php if (count($_countries) > 0): ?>
    <select name="country" id="country">
        <option value="">-- Please Select --</option>
        <?php foreach($_countries as $_country): ?>
            <option value="<?php echo $_country['value'] ?>">
                <?php echo $_country['label'] ?>
            </option>
        <?php endforeach; ?>
    </select>
<?php endif; ?>


在Magento Admin中创建一个国家下拉菜单

在Magento Admin区域创建表单时,我们使用实际的HTML是非常罕见的。其原因是表单通常是使用预建函数构建的。这样做的好处是每个管理页面看起来都是统一的,并且有助于保持Magento看起来像一个整体应用程序,而不是让一些位粘在它上面。作为我们添加HTML更改的方法,我们的创建我们国家的方法也必须是下拉框。

<?php

    $fieldset->addField('country', 'select', array(
        'name'    => 'country',
        'label'     => 'Country',
        'values'    => Mage::getModel('adminhtml/system_config_source_country')->toOptionArray(),    
    ));

?>

 

posted @ 2018-05-04 11:02  楼品玮  阅读(468)  评论(0编辑  收藏  举报