Переводчик классов не существует при использовании app () - ›setLocale () в поставщике службы приложений

Я пытаюсь использовать локализацию в своем приложении Laravel 5.8. Следуя этому Как создать эффективную и оптимизированную для SEO многоязычную архитектуру для вашего Laravel-приложения Я всегда делаю одни и те же шаги, и у меня нет проблем. Однако, когда я пробую это с Laravel 5.8, я продолжаю получать "Переводчик классов не существует" с app()->setLocale(request()->segment(1));. Я использую его в поставщике службы приложений по какой-то причине.

AppServiceProvider

<!-- language: php -->

public function register()
{
    app()->setLocale(request()->segment(1));

    Schema::defaultStringLength(191);
}

person mohammad hayajneh    schedule 13.05.2019    source источник
comment
Вы можете поделиться кодом со своего AppServiceProvider?   -  person nakov    schedule 13.05.2019
comment
@nakov уверен, что добавил это   -  person mohammad hayajneh    schedule 13.05.2019


Ответы (1)


Метод register не должен использоваться для использования служб.

Попробуйте добавить свой код в boot метод класса.

Также я считаю, что лучшее место для добавления этого находится в промежуточном программном обеспечении, чем в поставщике услуг.

person nakov    schedule 13.05.2019
comment
Один вопрос - это новый, потому что в старых версиях laravel я использовал его в методе регистрации и не имел проблем? - person mohammad hayajneh; 13.05.2019
comment
Нет, это не ново. Для привязки используется метод register, и нет гарантии, какой поставщик будет привязан первым. Поэтому иногда это может сработать, но нет гарантии, что он будет работать каждый раз, в зависимости от того, какой провайдер был привязан первым. Метод загрузки используется для фактического использования поставщиков, поскольку метод загрузки вызывается после того, как все было привязано. - person nakov; 13.05.2019