从Magento中提取国家/地区名称(或缩写)

时间:2011-08-08 22:18:53

标签: php magento country

我正在尝试将国家/地区命名为“United States”(或缩写为“USA”/“US”)。我尝试了以下几种变体:

echo Mage::getSingleton('customer/session')->getCustomer()->getCountry();
$countryName = Mage::getModel('directory/country')->load(Mage::getSingleton('customer/session')->getCustomer()->getCountry())->getName();
error_log("countryName = $countryName");

第一个电话似乎“似乎”工作,因为我得到6回(美国)。但在那之后,我无法找到如何将其映射到正确的名称或slug。

我见过程序员获取所有国家/地区名称和ID列表的帖子,但我不想迭代所有组合来查找名称。

TIA!

编辑: 按照clockworkgeeks的建议,我试过了:

$customer = Mage::getSingleton('customer/session')->getCustomer();
error_log(print_r($customer, true));
$countryCode = $customer->getDefaultBillingAddress()->getCountry();

但是,第3行无法调用getCountry()。也许getDefaultBillingAddress()不会返回对象。错误讯息:

PHP Fatal error:  Call to a member function getCountry() on a non-object in ...

思考? $ customer对象正确返回,但 CLASS 是MYCLIENT_Customer_Model_Customer对象...也许它不会扩展正确的父级以使其能够访问getCountry?

编辑:(解决方案):添加为答案。

3 个答案:

答案 0 :(得分:14)

通常情况下,国家等信息根本不存储在客户实体中,我不确定为什么会得到“6”。

$customer = Mage::getSingleton('customer/session')->getCustomer();
$countryCode = $customer->getDefaultBillingAddress()->getCountry();
// $countryCode looks like "US"
$country = Mage::getModel('directory/country')->loadByCode($countryCode);
echo $country->getName(); // looks like "United States"

答案 1 :(得分:3)

也许这会有所帮助:

$countryName = 
    Mage::getModel('directory/country')->load($countryCode)->getName();

来自:http://blog.chapagain.com.np/magento-get-country-and-region-collection/

答案 2 :(得分:-1)

所以,我通过这样做解决了这个问题:

customer_model_object = Mage::getSingleton('customer/customer');
$session = Mage::getSingleton('customer/session');
$country_name = $customer_model_object->load($session->getId())->getResource()->getAttribute('country')->getFrontend()->getValue($customer_model_object);

感谢您的帮助。你是对的clockworkgeek,这是一个从adminhtml添加到客户实体的属性。我不得不通过所有这些爵士乐才能进入这个国家slug,例如:“美国”。