我有一个应用程序,来自不同国家的用户正在创建订单。我需要根据用户的地址更改订单的币种。我可以从帐户详细信息中获得国家/地区。我的问题是,应该如何根据国家/地区更改货币?
在Yii2中我可以在哪里做?
我知道可以在main.php中设置货币。但是我需要能够在运行时更改货币。
答案 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);
}
}
];