如何在Prestashop中按国家名称获取国家ISO代码

时间:2019-01-11 11:36:11

标签: php prestashop prestashop-1.7

我正在prestashop 1.7中创建自己的模块,该模块用于支付网关,并且在创建结帐按钮并选择了我的支付网关后可以正常工作。

在这些插件中,我需要一些字段以用于某些目的,因为我需要用户名,电话,电子邮件和国家/地区代码。

我在这些变量中得到了用户名,电话和电子邮件:

$customerDetails = $this->context->customer;

$address = new Address($this->context->cart->id_address_delivery);

我也要获取国家/地区名称和国家/地区ID,但我需要的是国家/地区ISO代码。我看到prestashop在他们的数据库中有它的表,并且它们也有ISO代码,但是我找不到任何方法或推荐的方法来按国家名称或国家ID获取国家ISO代码。

2 个答案:

答案 0 :(得分:0)

您可以使用Country类方法public static function getIsoById($idCountry)

因此您可以执行以下操作:

$country_iso = Country::getIsoById([THE_ID]);

答案 1 :(得分:0)

此代码应该可以完美运行,只需将其添加到您的国家/地区代码中或您代码中的其他任何地方!

/**
* Get a country iso with its Name
*
* @param string $country_name Country Name
* @return string Country iso
*/
static public function getIsoByName($country_name)
{
    $sql='
    SELECT `id_country`
    FROM `'._DB_PREFIX_.'country_lang`
    WHERE `name` = "'.$country_name.'"';
    $result = Db::getInstance()->getRow($sql);
    $iso=Country::getIsoById($result['id_country']);
    return $iso;
}