yii2-根据地址更改币种

时间:2018-12-05 10:38:20

标签: yii2 internationalization

我有一个应用程序,来自不同国家的用户正在创建订单。我需要根据用户的地址更改订单的币种。我可以从帐户详细信息中获得国家/地区。我的问题是,应该如何根据国家/地区更改货币?

在Yii2中我可以在哪里做?

我知道可以在main.php中设置货币。但是我需要能够在运行时更改货币。

1 个答案:

答案 0 :(得分:0)

  • 首先,您必须从IP获取用户国家/地区,因为您可以使用yii2-geoip

  • 然后,您必须获取国家/地区货币,以获取国家/地区货币列表,以查看currency-list

  • 设置商店货币会话并更改整个网站货币。

示例:

<?php
$geoip = new \lysenkobv\GeoIP\GeoIP();
$ip = $geoip->ip(Yii::$app->request->getUserIP());
$currencies = json_decode(file_get_contents('data.json'), true);
foreach ($currencies as $currency) {
    if (strtoupper($currency['country']) == strtoupper($ip->isoCode)) {
        // set session and other jobs
    }
}

config/main.php(对于yii2-app-advanced)和config/web.php(对于yii2-app-basic)的示例:

<?php
return [
    //
    'on beforeAction' => function ($action) {
        if (!Yii::$app->session->has('global-currency')) {
            // your code for get found user $currency, maybe from db or ip
            Yii::$app->session->set('global-currency', $currency);
        }
    }
];