Magento:Region API名称= null

Ale*_*min 1 api magento

在Magento 1.5中,我正在调用区域API.它在我的开发环境中工作正常并返回:

[{"region_id":"66","code":"AB","name":"Alberta"},
{"region_id":"67","code":"BC","name":"British Columbia"},
{"region_id":"68","code":"MB","name":"Manitoba"},
{"region_id":"69","code":"NL","name":"Newfoundland and Labrador"},
{"region_id":"70","code":"NB","name":"New Brunswick"},
{"region_id":"71","code":"NS","name":"Nova Scotia"},
{"region_id":"72","code":"NT","name":"Northwest Territories"},
{"region_id":"73","code":"NU","name":"Nunavut"},
{"region_id":"74","code":"ON","name":"Ontario"},
{"region_id":"75","code":"PE","name":"Prince Edward Island"},
{"region_id":"76","code":"QC","name":"Quebec"},
{"region_id":"77","code":"SK","name":"Saskatchewan"},
{"region_id":"78","code":"YT","name":"Yukon Territory"}]
Run Code Online (Sandbox Code Playgroud)

然后,当在我的登台环境中调用此API时,结果是相同的,除非每个单独的名称都为null,即使id和代码是好的:

[{"region_id":"66","code":"AB","name":null},
{"region_id":"67","code":"BC","name":null},
{"region_id":"68","code":"MB","name":null},
{"region_id":"69","code":"NL","name":null},
{"region_id":"70","code":"NB","name":null},
{"region_id":"71","code":"NS","name":null},
{"region_id":"72","code":"NT","name":null},
{"region_id":"73","code":"NU","name":null},
{"region_id":"74","code":"ON","name":null},
{"region_id":"75","code":"PE","name":null},
{"region_id":"76","code":"QC","name":null},
{"region_id":"77","code":"SK","name":null},
{"region_id":"78","code":"YT","name":null}]
Run Code Online (Sandbox Code Playgroud)

什么会导致这个?

Jan*_*__ 5

我不知道,如果你找到了解决方案,但我遇到了同样的问题.它似乎是magento核心代码中的一个错误(详见region-api).显然这个bug存在到3年或更长时间......但是我发现这是解决它的问题:

转到Mage_Directory_Model_Region_Api(在Magento 1.6.2中,此文件位于app/code/core/Mage/Directory/Model/Region/Api.php中)并更改以下行:

class Mage_Directory_Model_Region_Api extends Mage_Api_Model_Resource_Abstract
{
    /**
    * Retrieve regions list
    *
    * @param string $country
    * @return array
    */
    public function items($country)
    {
        try {
            $country = Mage::getModel(’directory/country’)->loadByCode($country);
        } catch (Mage_Core_Exception $e) {
            $this->_fault(’country_not_exists’, $e->getMessage());
        }

        if (!$country->getId()) {
            $this->_fault(’country_not_exists’);
        }

        $result = array();
        foreach ($country->getRegions() as $region) {
            $region->setName($region->getName());  // This is the important line to set the name
            $result[] = $region->toArray(array(’region_id’, ‘code’, ‘name’));
        }

        return $result;
    }
} 
Run Code Online (Sandbox Code Playgroud)