我试图按国名查找国家代码。因此,举例来说,我有“荷兰”,我需要得到“NL”Magento:按国名获取国家代码
我知道有方法来查找名称形式代码:
$country_name = Mage::app()->getLocale()->getCountryTranslation($country_code)
但我需要反之亦然。
那么在Magento中有解决它的方法吗?
我试图按国名查找国家代码。因此,举例来说,我有“荷兰”,我需要得到“NL”Magento:按国名获取国家代码
我知道有方法来查找名称形式代码:
$country_name = Mage::app()->getLocale()->getCountryTranslation($country_code)
但我需要反之亦然。
那么在Magento中有解决它的方法吗?
From the other question,这只能通过国家征收
$countryId = '';
$countryCollection = Mage::getModel('directory/country')->getCollection();
foreach ($countryCollection as $country) {
if ($countryName == $country->getName()) {
$countryId = $country->getCountryId();
break;
}
}
echo $countryId;
因为数据是如何存储在XML的循环做是没有办法过滤或负载的名字。
无需加载国家集合,只需通过语言环境访问该XML:http:// stackoverflow.com/a/31876032/1939217 –
全国收集
<select title="Country" class="validate-select" id="billing:country_id" name="billing[country_id]">
<option value=""> </option>
<?php
$collection = Mage::getModel('directory/country')->getCollection();
foreach ($collection as $country)
{
?>
<option value="<?php echo $country->getId(); ?>"><?php echo $country->getName(); ?></option>
<?php
}
?>
</select>
有一种方式来获得国家ID无负载的国家收藏。由于与名称映射的所有国家/地区ID均以XML格式存储,因此您可以通过语言环境对象访问该XML。
$list = Mage::app()->getLocale()->getCountryTranslationList();
foreach ($list as $id => $name) {
if ($name == $countryName) {
return $id;
}
}
请注意国名应翻译成当前语言环境语言。否则,改变区域设置必要的一个:
$oldCode = Mage::app()->getLocale()->getLocaleCode();
Mage::app()->getLocale()->setLocaleCode('en_US');
...
...
...
Mage::app()->getLocale()->setLocaleCode($oldCode);
这对我的作品 $list = Mage::app()->getLocale()->getCountryTranslationList(); $list=array_flip($list); echo $list['United States'];
的可能重复[Magento的 - 从名称获取国家的ID - 有没有更简单/更快的方法?(HTTP://计算器.com/questions/18786233/magento-get-country-id-name-is-there-a-easy-way-way) –