Laravel 容器升级问题
Laravel Container Upgrade Issue
我正在从 5.8 升级到 7,并且我有一个允许从数据库中提取邮件的 smtp 设置的功能。
它来自本教程
https://laravel-news.com/allowing-users-to-send-email-with-their-own-smtp-settings-in-laravel
$this->app->bind('user.mailer', function ($app, $parameters) {
$smtp_host = Arr::get($parameters, 'smtp_host');
$smtp_port = Arr::get($parameters, 'smtp_port');
$smtp_username = Arr::get($parameters, 'smtp_username');
$smtp_password = Arr::get($parameters, 'smtp_password');
$smtp_encryption = Arr::get($parameters, 'smtp_encryption');
$from_email = Arr::get($parameters, 'from_email');
$from_name = Arr::get($parameters, 'from_name');
$from_email = $parameters['from_email'];
$from_name = $parameters['from_name'];
$transport = new Swift_SmtpTransport($smtp_host, $smtp_port);
$transport->setUsername($smtp_username);
$transport->setPassword($smtp_password);
$transport->setEncryption($smtp_encryption);
$swift_mailer = new Swift_Mailer($transport);
$mailer = new Mailer($app->get('view'), $swift_mailer, $app->get('events'));
$mailer->alwaysFrom($from_email, $from_name);
$mailer->alwaysReplyTo($from_email, $from_name);
return $mailer;
});
这在以前的版本中有效,但是在 Laravel 7 中我收到一个错误
传递给 Illuminate\Mail\Mailer::__construct() 的参数 1 必须是字符串类型,对象给定
这里失败 $app->get('view')
我已经查看了升级指南,但我正在努力修复它。
我比较了两个版本的__construct,你可以看出区别。
在第 86 行
void __construct(工厂 $views, Swift_Mailer $swift, Dispatcher $events = null)
在第 103 行
void __construct(string $name, Factory $views, Swift_Mailer $swift, Dispatcher $events = null)
您需要更新代码。
我正在从 5.8 升级到 7,并且我有一个允许从数据库中提取邮件的 smtp 设置的功能。 它来自本教程 https://laravel-news.com/allowing-users-to-send-email-with-their-own-smtp-settings-in-laravel
$this->app->bind('user.mailer', function ($app, $parameters) {
$smtp_host = Arr::get($parameters, 'smtp_host');
$smtp_port = Arr::get($parameters, 'smtp_port');
$smtp_username = Arr::get($parameters, 'smtp_username');
$smtp_password = Arr::get($parameters, 'smtp_password');
$smtp_encryption = Arr::get($parameters, 'smtp_encryption');
$from_email = Arr::get($parameters, 'from_email');
$from_name = Arr::get($parameters, 'from_name');
$from_email = $parameters['from_email'];
$from_name = $parameters['from_name'];
$transport = new Swift_SmtpTransport($smtp_host, $smtp_port);
$transport->setUsername($smtp_username);
$transport->setPassword($smtp_password);
$transport->setEncryption($smtp_encryption);
$swift_mailer = new Swift_Mailer($transport);
$mailer = new Mailer($app->get('view'), $swift_mailer, $app->get('events'));
$mailer->alwaysFrom($from_email, $from_name);
$mailer->alwaysReplyTo($from_email, $from_name);
return $mailer;
});
这在以前的版本中有效,但是在 Laravel 7 中我收到一个错误
传递给 Illuminate\Mail\Mailer::__construct() 的参数 1 必须是字符串类型,对象给定
这里失败 $app->get('view')
我已经查看了升级指南,但我正在努力修复它。
我比较了两个版本的__construct,你可以看出区别。
在第 86 行 void __construct(工厂 $views, Swift_Mailer $swift, Dispatcher $events = null)
在第 103 行 void __construct(string $name, Factory $views, Swift_Mailer $swift, Dispatcher $events = null)
您需要更新代码。