【问题标题】:Laravel Mailable | ->from($this->input->mail)Laravel 可邮寄 | ->从($this->输入->邮件)
【发布时间】:2020-02-16 14:40:24
【问题描述】:

我已经创建了一个

php artisan make:mail ContactFormFilledOut

效果很好。但我唯一的问题是我无法访问用户邮件以将其插入

->from('users-mail')

我试图通过这样做来获取用户的邮件 $this->input->mail 但我得到了错误 Trying to get property 'mail' of non-object 所以我也试着做 $this->input['mail']。 这也没有帮助。

public function build()
    {

        return $this->view('mail.kontaktform')
            ->from($this->input->mail) // HERE IS THE ISSUE
            ->subject('Test subject');
    }

这里有所有代码

class ContactFormFilledOut extends Mailable
{
    use Queueable, SerializesModels;

    public $input;
    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($input)
    {
        $this->input = $input;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {

        return $this->view('mail.kontaktform')
            ->from($this->input->mail) // HERE IS THE ISSUE
            ->subject('Test subject');
    }
}

【问题讨论】:

    标签: email laravel-5.6


    【解决方案1】:

    您可以在构造函数中指定希望 Laravel 注入的数据,在这种情况下,您希望能够访问假定为该电子邮件发件人的用户的电子邮件地址。你可以这样做

    use App\User; 
    
    class ContactFormFilledOut extends Mailable
    {
        public $user;
    
        public function __construct(User $user)
        {
            $this->user = $user;
        }
        /* ... */
    }
    

    Laravel 会自动注入经过身份验证的用户,并将其保存在 mailable 的 user 属性中。

    你有这个问题是因为当你在邮件的constructor 中添加$input 作为参数时,Laravel 不知道要注入哪个对象。

    但是你可以克服这个问题,你可以相互实例化可邮寄的东西并传入$input,这可以是你想要的任何东西

    $mailable = new ContactFromFilledOut($some_data);
    
    $user = User::find(1);
    Mail::to($user)
        ->send($mailable);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-16
      • 2018-09-07
      • 2017-04-02
      • 1970-01-01
      • 2019-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多