как получить выбранный вариант из выпадающего списка и конвертировать все цены на товары в соответствии с базовой валютой в laravel - PullRequest
0 голосов
/ 10 января 2020

Это мой код для получения курса обмена всех валют в соответствии с базовой валютой через ключ 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, base: INR, в выбранную пользователем опцию.

Ответы [ 2 ]

0 голосов
/ 11 января 2020

Вам нужно изменить значение с помощью 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>
0 голосов
/ 11 января 2020

я думаю, вы можете использовать '' '$ cur-> rate [i]' '', поскольку i - это индекс для нас в коллекции!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...