我正在尝试使用 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>
当前数据库结构:
任何解决方案谢谢
创建一个简单的 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
}
});
});