在 Laravel 中实现多种货币转换器

问题描述 投票:0回答:1

我正在尝试使用 Laravel 实现货币转换器

torann/货币包

https://lyften.com/projects/laravel-currency/doc/

安装了这个软件包

composer require torann/currency

发布包

php artisan vendor:publish --provider="Torann\Currency\CurrencyServiceProvider" --tag=config
php artisan vendor:publish --provider="Torann\Currency\CurrencyServiceProvider" --tag=migrations

然后运行迁移

php artisan migrate

我必须从美元转换为瑞典克朗,反之亦然,默认货币将为美元

php artisan currency:manage add usd,sek

使用 OpenExchangeRates.org 获取汇率数据

配置/currency.php

'api_key' => env('OPEN_EXCHANGE_RATE_KEY'),

用于更新数据库中的汇率

php artisan currency:update -o

config/currency.php

中将默认货币设置为美元
'default' => env('DEFAULT_CURRENCY', 'USD'),

已添加

CurrencyMiddleware

protected $middlewareGroups = [
    'web' => [
        ...
        \Illuminate\Session\Middleware\StartSession::class,
        \Torann\Currency\Middleware\CurrencyMiddleware::class,
        ...
    ],
];

已创建

UserCurrencyMiddleware.php

  public function handle(Request $request, Closure $next)
    {
        if (! $request->get('currency') && ! $request->getSession()->get('currency')) {
            $request->getSession()->put([
                'currency' => 'SEK',
            ]);
          }
          return $next($request);
    }

在我的blade.php上

货币正在兑换

 {{ currency(5.99, 'USD', currency()->getUserCurrency()); }}

但我希望它根据下拉选择进行转换,如果用户更改为美元,则应为美元,而韩元应转换为韩元。

   <select class="form-control">
                    <option value="USD">USD</option>
                    <option value="KR">Kr</option>
   </select>

当前数据库结构:

enter image description here

任何解决方案谢谢

php laravel currency
1个回答
0
投票

创建一个简单的 API 端点,用于接收金额和货币,并返回包含转换后金额的响应,然后在选择输入 onChange 事件中使用 Ajax 调用该 API

这是示例代码

controller:

public function convertCurrency(Request $request){
$amount = currency($request->amount, $request->from , currency()->getUserCurrency());

return response()->json(['amount' => $amount ]);
}

route:
Rooute::get("/convert-currency", [SomeController::class,'convertCurrency']);

script:
$('#select').change(function(){
$.ajax({
    url: "/api/convert-currency",
    data: { "amount": 20 , "from": $("#select").val() },
    type: "post",
    success: function(data){
       //handle success res
    }
});
});
© www.soinside.com 2019 - 2024. All rights reserved.