如何从下拉列表中获取所选选项,并根据Laravel 的基础货币转换所有产品价格



这是我通过api密钥根据基础货币获取所有货币汇率的代码。

public function rates()
{
$uri = sprintf($this->config('api_key'));
$request = $this->httpClient->get($uri);
$content = $request->getBody()->getContents();
$response = json_decode($content);
return (array) $response;
}

这是我的控制器

public function json(){
$cur= ExchangeRate::rates();
return $cur;
}

这是我的路线

Route::get('/json-api', 'IndexController@json');

之后我得到了这个

base    "INR"
date    "2020-01-10"
time_last_updated   1578615072
rates   
INR 1
AED 0.05119
ARS 0.833853
AUD 0.020417
BGN 0.024695
BRL 0.056974
BSD 0.013941
CAD 0.018283
CHF 0.013624
CLP 10.648733
CNY 0.097143
COP 44.541667

我还创建了下拉列表,用于从json数据中获取所有货币

<select name="current" id="current"  class="form-control">
@foreach($cur as $key=> $value)
<option value="{{ $key->value }}"> {{ $value->value }}</option>
@endforeach
</select>

现在一切正常 我想根据所有页面中的下拉列表选择转换所有产品价格。 如转换 (product_price, 基数:INR, 到 USer 选择的选项。

你需要用javascript更改值。将默认货币的基本价格添加为每件商品的属性,并将每个select元素的汇率添加为属性。然后它只是简单的js。这是vanila JS的示例

<select name="current" id="current"  class="form-control">
@foreach($cur as $key=> $value)
<option data-value="{{$value}}" value="{{ $key->value }}"> {{ $value->value }}</option>
//*******************^^^^^^^^^********/
//Put the exchange value here in data-value, such as 0.05119,0.833853, etc
@endforeach
</select>

我放了一个显示工作的片段

(function() {
const select = document.getElementById('current');
const price = document.getElementsByClassName('price');
select.onchange = function() {
const option_index = this.selectedIndex;
const multiplier = select.querySelectorAll('option')[option_index].getAttribute('data-value');
const length = price.length;
for (var i = 0; i < length; i++) {
price[i].innerHTML = price[i].getAttribute('data-base-price') * multiplier;
}
};
})();
<select name="current" id="current" class="form-control">
<option data-value="1" value="1">INR</option>
<option data-value="0.05119" value="0.05119">AED</option>
<option data-value="0.833853" value="0.833853">ARS</option>
<option data-value="0.2041" value="0.2041">AUD</option>
</select>
<ul>
<li class="price" data-base-price=10>10</li>
<li class="price" data-base-price=20>20</li>
<li class="price" data-base-price=30>30</li>
<li class="price" data-base-price=40>40</li>
</ul>

我认为您可以使用"$cur->rate[i]",因为我是我们在集合中的索引号!

最新更新