Не удается заставить псевдонимы и фасады работать в пакете Laravel

Я разрабатываю пакет Laravel и у меня проблемы с настройкой фасадов / псевдонимов. То есть Я хочу иметь класс для форматирования денег, чтобы в бэкэнде и в представлениях я мог просто сделать Money::format(10) и отформатировать его в соответствии с конфигурацией валюты.

Итак, сначала в основном поставщике пакетов я зарегистрировал HelpersProvider, а внутри него у меня есть:

public function register()
{

$this->app->singleton(\PathToPackage\Helpers\Money::class, function ($app) {
return new \PathToPackage\Helpers\Money();
});
$this->app->alias(\PathToPackage\Helpers\Money::class, 'money');

}

public function provides()
{

return [\PathToPackage\Helpers\Money::class, 'money'];

}

Мой класс денег прост:

namespace PathToPackage\Helpers;

class Money {

public static function format($amount) {

// format and return

}

}

Теперь, если я поставлю только use Money в моем контроллере он не работает, поэтому псевдоним не работает. Синглтон работает, хотя, если я назову класс как \PathToPackage\Helpers\Money::format() в контроллере он создается только один раз.

То же самое в моих взглядах — если я позвоню, как {{ Money::format() }} это не работает, но используя полный путь {{ \PathToPackage\Helpers\Money::format() }} это работает.

Я тоже делал фасадный класс, но не понял, где его подключить в провайдере?

namespace PathToPackage\Facades\Money;

use Illuminate\Support\Facades\Facade;

class Money extends Facade
{
protected static function getFacadeAccessor()
{
return 'money';
}
}

Что я делаю неправильно?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector