@dimainc

Вызов хелпера в шаблоне Laravel?

Изучаю Laravel. Возник такой вопрос.

Возможно ли вызвать сервис-провайдер из шаблона Laravel?

В документации нашёл такой фрагмент:

"Вы можете вставить в шаблон любой класс, который определён в сервис-контейнере фреймворка. Для этого используется директива @inject, первый аргумент которой - название переменной, в которую будет помещён экземпляр класса, а второй - название внедряемого класса или интерфейса"

И сам пример:
@inject('metrics', 'App\Services\MetricsService')

Monthly Revenue: {{ $metrics->monthlyRevenue() }}.

в inject я указал путь к своиму сервис провайдеру App\Providers\RatesProvider
Но я получаю ошибку
Unresolvable dependency resolving [Parameter #0 [ $app ]] in class Illuminate\Support\ServiceProvider (View: D:\OpenServer\domains\myblog.ru\resources\views\admin\edit-post.blade.php)

Сервис провайдер абсолютно простой, просто возвращает определенное значение при вызове из контроллера он работает.

Вот функция register в сервис провайдере
public function register(){
        $this->app->bind('App\Helpers\RatesContract', function () {
            return new RatesController($this->app);
        });
    }


Сам интерфейс RatectContract.php
<?php

namespace App\Helpers;

Interface RatesContract
{

    public function getRate();


}


И контроллер RatesController.php
<?php

namespace App\Helpers;

use App\Helpers\RatesContract;

class RatesController implements RatesContract
{

    public function getRate(){
        
        return "123123";

    }
}


При обычном вызове и контроллера он возвращает мне моё значение
  • Вопрос задан
  • 504 просмотра
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
Нужно инжектить не провайдер, а сам интерфейс RatesContract.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы