2014-01-29 5 views
4

국가 별 국가 코드를 찾으려고 노력했습니다.Magento : 국가 이름별로 국가 코드 받기

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

하지만 그 반대의 경우도 마찬가지 필요 : 그래서, 예를 들어, 나는 "NL"

내가 거기에 이름 양식 코드를 찾는 방법은 알고를 얻을 필요가있다 "네덜란드"를 가지고있다.
Magento에서 해결 방법이 있습니까?

+0

의 중복 가능성 작동 [젠토는 - 이름에서 나라 ID를 가져 - 거기 쉬운/빠른 방법입니다?] (HTTP : // 유래 .com/questions/18786233/magento-get-country-id-name-is-the-easy-quick-way) –

답변

5

From the other question, 이것은 단지 이름으로 더 필터링하는 방법 또는 부하가없는 나라 수집하기 때문에 데이터가 XML에 저장되는 방식의

$countryId = ''; 
$countryCollection = Mage::getModel('directory/country')->getCollection(); 
foreach ($countryCollection as $country) { 
    if ($countryName == $country->getName()) { 
     $countryId = $country->getCountryId(); 
     break; 
    } 
} 
echo $countryId; 

통해 반복하여 수행 할 수 있습니다.

+0

국가 컬렉션을로드 할 필요없이 locale을 통해 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'];