2014-01-29 516 views
4

我試圖按國名查找國家代碼。因此,舉例來說,我有「荷蘭」,我需要得到「NL」Magento:按國名獲取國家代碼

我知道有方法來查找名稱形式代碼:

$country_name = Mage::app()->getLocale()->getCountryTranslation($country_code) 

但我需要反之亦然。
那麼在Magento中有解決它的方法嗎?

+0

的可能重複[Magento的 - 從名稱獲取國家的ID - 有沒有更簡單/更快的方法?(HTTP://計算器.com/questions/18786233/magento-get-country-id-name-is-there-a-easy-way-way) –

回答

5

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的循環做是沒有辦法過濾或負載的名字。

+0

無需加載國家集合,只需通過語言環境訪問該XML:http:// stackoverflow.com/a/31876032/1939217 –

0

全國收集

 <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> 
2

有一種方式來獲得國家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); 
5

這對我的作品 $list = Mage::app()->getLocale()->getCountryTranslationList(); $list=array_flip($list); echo $list['United States'];