Laravel On Demand Notification错误" Undefined index:name"

时间:2018-01-08 16:34:22

标签: php laravel undefined

Laravel 5.5.28

我使用Laravel的随需应变通知将简单表单​​提交的电子邮件发送到中央地址。我遵循了laravel文档here

我在env文件中设置了mailtrap。

我的控制器中的代码:

use Notification // set at top of class
$submission = FormSubmission::create($request->all());

Notification::route('mail', 'test@test.org')
    ->notify(new FormSubmissionNotificiation($submission));

但是得到了一个哎呀错误。它在此方法中的vendor/laravel/framework/src/Illuminate/Mail/MailServiceProvider.php失败

protected function setGlobalAddress($mailer, array $config, $type)
    {
        $address = Arr::get($config, $type);

        if (is_array($address) && isset($address['address'])) {
            $mailer->{'always'.Str::studly($type)}($address['address'], $address['name']);
        }
    }

它试图找到$address['name']索引。但我没有名字,如果我这样做,我该把它放在哪里?

似乎无法理解,任何帮助都会受到赞赏。

编辑: 我以不同的方式尝试过这种方式。我在用户中添加了我的数据库,并将Notifiable特征添加到User模型中并尝试发送通知,如

$user->notify(new FormSubmissionNotification($submission);并且仍然遇到同样的错误。

3 个答案:

答案 0 :(得分:0)

来自the notifications docs

  

发送邮件通知时,请务必在name配置文件中设置config/app.php值。此值将用于邮件通知消息的页眉和页脚。

答案 1 :(得分:0)

您必须在MAIL_NAME

中设置.env

config/mail.php

/*
    |--------------------------------------------------------------------------
    | Global "From" Address
    |--------------------------------------------------------------------------
    |
    | You may wish for all e-mails sent by your application to be sent from
    | the same address. Here, you may specify a name and address that is
    | used globally for all e-mails that are sent by your application.
    |
    */

    'from' => ['address' => env('MAIL_FROM', null), 'name' => env('MAIL_NAME', null)],

https://laravel.com/docs/5.5/mail#writing-mailables

答案 2 :(得分:0)

好的,我想出来了。实际上非常愚蠢。

我在我的.env文件中添加了一个onclick()变量来保存我想要发送通知的电子邮件地址,但是不想直接在控制器中调用env文件,因此设置了一个新的MAIL_TO_ADDRESS文件中的数组元素,如下所示

config/mail.php

然后我计划在控制器中使用它,就像这样

 'to' => [
      'address' => env('MAIL_TO_ADDRESS')
  ],

但即使我在控制器中直接使用字符串中的虚拟电子邮件地址进行测试,它也会使用Notification::route('mail', config('mail.to.address')) ->notify(new FormSubmissionNotificiation($submission)); 变量和邮件配置文件中的电子邮件地址。即使我没有在任何地方引用它。

一旦我从配置中删除了整个数组,它就会起作用,同样,如果我为该数组添加一个名称,它就可以了。这也阻止了我使用标准to,并且总是试图使用env文件中的电子邮件地址而不是用户模型。