Сейчас я пытаюсь обновить свое приложение от Laravel 5.3 до 5.4. Все работало отлично, за исключением моего почтового драйвера для Mailjet.Переключиться с share на singleton с помощью настраиваемого почтового драйвера
Я установил пользовательский MailServiceProvider для регистрации драйвера Mailjet. Сейчас это выглядит ссылки это (и работал отлично с 5.3):
<?php
namespace App\Providers;
class MailServiceProvider extends \Illuminate\Mail\MailServiceProvider
{
public function registerSwiftTransport()
{
$this->app['swift.transport'] = $this->app->share(function ($app) {
return new \App\Mail\Transport\TransportManager($app);
});
}
}
В Laravel 5.4 доля функция больше не поддерживается. Рекомендуется использовать singleton(). Поэтому я попробовал серверные вещи. Я думаю, что с помощью следующего кода я получил очень близко к рабочему раствору:
public function registerSwiftTransport()
{
$this->app->singleton('swift.transport', function ($app) {
return new \App\Mail\Transport\TransportManager($app);
});
}
Но здесь я получаю 500 ошибку, потому что HandleExceptions.php бежит из космоса.
Я также попытался пошевелить обычай TransportManager.php файл в \ App \ Providers \ и изменил линию возврата так:
return new \App\Providers\TransportManager($app);
Вот он говорит: «Класс 'App \ Providers \ TransportManager' не найден ». Но: Да, файл находится в правильном каталоге.
Любые идеи о том, как решить мою проблему с отсутствующей функцией совместного доступа в несколько простых шагов или, по-вашему, я должен переусердствовать по всей моей установке maildriver.
Благодаря
Какое пространство имен у вашего поставщика транспорта? – Paras
Да, я забыл установить его в App \ Providers после перемещения файла. Но когда я меняю это, я также получаю ошибку 500. –