我想在我的应用程序的几乎每个页面中使用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>


这抛出。


“找不到类'Money'。”


而在子类中包含相同的use语句将按预期工作。

最佳答案

与视图共享类实际上并不是Laravel做到这一点的方法。通常,所有逻辑都应在控制器内,并将数据传递到视图中。

话虽如此,您可以将类手动传递到每个视图中,也可以参考文档,因为Laravel Money内置了Blade扩展。也许这提供了您需要的所有功能?

按照Laravel Money docs

@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)

关于php - 有没有办法将PHP类导入 Blade 模板并在子模板中使用它们?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54393490/

10-13 03:39