Laravel Mailable |-> от ($ this-> вход-> почта) - PullRequest
0 голосов
/ 20 октября 2019

Я создал

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');
    }
}

1 Ответ

0 голосов
/ 20 октября 2019

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

use App\User; 

class ContactFormFilledOut extends Mailable
{
    public $user;

    public function __construct(User $user)
    {
        $this->user = $user;
    }
    /* ... */
}

Laravel автоматически внедрит аутентифицированного пользователя и сохранит его в свойстве user отправляемого сообщения.

У вас есть такая проблема, потому что Laravel неНе знаю, какой объект добавить, когда вы добавляете $input в качестве параметра в constructor вашего почтового сообщения.

Но вы можете преодолеть это, если вы создаете экземпляр почтового отправления и передаете в него $input, который может быть любым, что вы захотите

$mailable = new ContactFromFilledOut($some_data);

$user = User::find(1);
Mail::to($user)
    ->send($mailable);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...