【问题标题】:Is There a Way to Import PHP Classes into a Blade Template and Use Them in Child Templates?有没有办法将 PHP 类导入 Blade 模板并在子模板中使用它们?
【发布时间】:2019-06-20 22:53:27
【问题描述】:

我想在我的应用程序的几乎每个页面中使用 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 语句可以按预期工作。

【问题讨论】:

    标签: php laravel laravel-blade


    【解决方案1】:

    与视图共享类并不是真正的 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)
    

    【讨论】:

      【解决方案2】:

      您可以使用子模板的完整路径编写它。

      \Cknow\Money\Money::GBP($item->price);
      

      如果您只想使用Money 而不是完整路径,您可以从config/app.php 文件创建一个别名。

      【讨论】:

      • 赞成:“您可以从 config/app.php 文件创建别名。”谢谢!
      猜你喜欢
      • 1970-01-01
      • 2019-08-16
      • 1970-01-01
      • 1970-01-01
      • 2011-03-27
      • 1970-01-01
      • 2018-10-21
      • 1970-01-01
      • 2021-03-10
      相关资源
      最近更新 更多