Laravel устанавливает значения конфигурации с помощью промежуточного программного обеспечения - PullRequest
0 голосов
/ 23 мая 2019

В моем пакете laravel я хочу установить новые значения конфигурации с помощью Global Middlware

Итак, я регистрирую промежуточное ПО с помощью поставщика услуг

public function boot()
    {
        Route::middlewareGroup('mypackagename', config('mypackagename.middleware', []));
        .....

Затем я устанавливаю класс промежуточного программного обеспечения в пакетеКонфигурационный файл выглядит так:

'middleware' => [
        'web',
        qoraiche\mypackagename\Http\Middleware\setConfigs::class,
    ],

setConfigs Middleware:

public function handle($request, Closure $next)
    {
        // --
        config(['mail.from.name' => 'New Name']);

        return $next($request);
    }

Я выполняю тесты и промежуточное программное обеспечение зарегистрировано правильно, но я все еще не могу установить значения конфигурации во время выполнения.

единственное, что работает для меня, - это когда я устанавливаю значения конфигурации в методе загрузки поставщика услуг.

public function boot()
    {

     config(['mail.from.name' => 'New Name']);

     ....

}

1 Ответ

0 голосов
/ 23 мая 2019

Промежуточное программное обеспечение выполняется после загрузки поставщиков услуг и конфигурации. Это означает, что когда почтовый стек инициализируется, он принимает «старые» значения конфигурации.

Вы должны сделать что-то подобное после установки конфигурации в промежуточном программном обеспечении, учитывая, что вы работаете с MailServiceProvider.

(new Illuminate\Mail\MailServiceProvider(app()))->register();

В любом случае, изменение значений конфигурации в промежуточном программном обеспечении - плохая практика (как вы можете видеть, это работает не всегда), это нужно делать в поставщиках услуг.

Это также потому, что связующее ПО не выполняется в сценариях, отличных от http (очереди заданий, команды ремесленников, запланированные задания ...)

В любом случае

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