как вызвать данные из laravel в почтовом ящике в представлении - PullRequest
0 голосов
/ 18 октября 2019

У меня есть класс, который можно отправить по электронной почте кому-то, кто заключил контракт. Сейчас я пытаюсь стилизовать почту, но ... я не могу вызвать переменную, которую я передаю в возвращаемом классе mailable.

Я пытался передать его представлению в mailableкласс, и я попытался вызвать его, но в почте он не отображается.

это мой почтовый класс:

public function build()
    {
        $data = array(
            'comapny' => $this->data['company'],
            'file' => $this->data['file'],
            'subject' => $this->data['subject'],
            'email' => $this->data['email']
        );
        foreach($data['email'] as $mail)
        return $this->view('mails.contract')->with('data' , $data['company'])->to($mail)->subject($data['subject'])->attach($data['file'])->withSwiftMeassage(function ($message){
            $swiftMessage = $message->getSwiftMessage();
            $headers = $swiftMessage->getHeaders();
            $headers->addTextHeader('From', 'example - contract <example-email@gmail.com>');
            $headers->addTextHeader('Reply-To', 'example-email@gmail.com');
            $headers->addTextHeader('X-Mailer:', 'PHP/' . phpversion());
        });
    }
}

представление, мне нужно вызвать данные для:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <p><?php echo $data ?></p>
</body>
</html>

любая помощь приветствуется

Ответы [ 3 ]

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

Если вы возвращаете представление для отображения данных для почтового шаблона (в данном случае я предполагаю, что это шаблон mails.contract), у вас есть шаблон блейда, который находится в ресурсах / mails / и называется contract.blade.php?

https://laravel.com/docs/5.8/mail#configuring-the-view
https://laravel.com/docs/5.8/mail#view-data

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

Вы можете передать переменную в почтовый класс, например.

Необходимо создать конструктор и определить публичную функцию.

public $data;

public function __construct( $parameter )
{

    $data = /*Your logic define here and assign to `$this->data`*/
    $this->data = $data;

}

public function build()
{
    return $this->view('mails.contract')->with(['data' => $this->data])
        ->to($mail)->subject($this->data['subject'])
        ->attach($this->data['file'])
        ->withSwiftMeassage(function ($message){
            $swiftMessage = $message->getSwiftMessage();
            $headers = $swiftMessage->getHeaders();
            $headers->addTextHeader('From', 'example - contract <example-email@gmail.com>');
            $headers->addTextHeader('Reply-To', 'example-email@gmail.com');
            $headers->addTextHeader('X-Mailer:', 'PHP/' . phpversion());
        });
}

любое открытое свойство, определенное в вашем почтовом сообщении. класс будет автоматически доступен для просмотра.

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

Вам необходимо использовать with() с массивами.

Заменить ->with('data' , $data['company']) на ->with(['data' => $data['company']])

...