Есть ли способ импортировать PHP-классы в шаблон Blade и использовать их в дочерних шаблонах? - PullRequest
0 голосов
/ 28 января 2019

Я хочу использовать пакет 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>

Этот бросок.

«Класс« Деньги »не найден».

Принимая во внимание, что включение того же оператора использования в дочерний класс работает, как и ожидалось.

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Совместное использование классов с представлениями на самом деле не способ Laravel .Как правило, вся логика должна находиться внутри контроллера, а данные передаются в представление.

При этом вы можете передать класс в каждое представление вручную или ссылаться на документы, поскольку в Laravel Money встроены расширения Blade. Возможно, это обеспечивает всю необходимую вам функциональность?

Согласно документам Laravel Money

@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)
0 голосов
/ 28 января 2019

Вы можете написать его, используя полный путь от дочернего шаблона.

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

Если вы просто хотите использовать Money вместо полного пути, вы можете создать псевдоним из файла config/app.php.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...