我想在应用程序的几乎每个页面中使用cknow/laravel-money
软件包。我认为一种干净的方法是将类导入父级刀片服务器。但是,子模板似乎无法访问导入的类。
我尝试使用标准的<?php ?>
标签和@php @endphp
指令。
app.blade.php
@php
use Cknow\Money\Money;
@endphp
<title>{{ config('app.name') }}</title>
</head>
<body>
@include('inc.navbar')
@include('inc.flashmessages')
<div class="container">
@yield('content')
</div>
</body>
</html>
show.blade.php
<div class="card-footer text-muted">
{{ Money::GBP($item->price) }}
</div>
抛出。
“未找到“货币”类。”
在子类中包含相同的use语句的工作符合预期。
答案 0 :(得分:1)
您可以使用子模板的完整路径编写它。
\Cknow\Money\Money::GBP($item->price);
如果只想使用Money
而不是完整路径,则可以从config/app.php
文件创建别名。
答案 1 :(得分:0)
使用视图共享类并不是执行此操作的 Laravel方法。通常,所有逻辑都应在控制器内,并将数据传递到视图中。
话虽如此,您可以将类手动传递到每个视图中,也可以参考文档,因为Laravel Money内置了Blade扩展。也许这提供了您需要的所有功能?
@currency('USD')
@money(500) // To use default currency present in `config/money.php`
@money(500, 'USD')
// Aggregation
@money_min(@money(100, 'USD'), @money(200, 'USD'), @money(300, 'USD')) // Money::USD(100)
@money_max(@money(100, 'USD'), @money(200, 'USD'), @money(300, 'USD')) // Money::USD(300)
@money_avg(@money(100, 'USD'), @money(200, 'USD'), @money(300, 'USD')) // Money::USD(200)
@money_sum(@money(100, 'USD'), @money(200, 'USD'), @money(300, 'USD')) // Money::USD(700)
// Parsers
@money_parse('$5.00') // Money::USD(100)
@money_parse_by_bitcoin("\xC9\x830.41") // Money::XBT(41000000)
@money_parse_by_decimal('1.00', 'USD') // Money::USD(100)
@money_parse_by_intl('$1.00') // Money::USD(100)
@money_parse_by_intl_localized_decimal('1.00', 'USD') // Money::USD(100)