Изучаю 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";
}
}
При обычном вызове и контроллера он возвращает мне моё значение