当我第一次需要访问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(), )); ?>