Рендеринг по почте установлен между 3 парными кавычками - PullRequest
0 голосов
/ 02 июня 2019

У меня проблемы с отображением моего почтового ящика в представлении.Я ясно вижу (в телескопе), что в моем запросе на публикацию есть сеанс с ключом массива «Предварительный просмотр», но в браузере ничего не отображается.

При отладке значения моего ответа я нахожу, что мое представление-data имеет ключ предварительного просмотра, установленный на правильный строковый рендер представления между еще двумя кавычками ("")

Например:

[
  "preview": """<html></html>"""
]

Вот мой код:

Просмотр: Где я проверяю, определен ли $ preview в переменной $res с контроллера .

    </div>
    @isset($preview)
        <hr>
        <div class="form-group row">
            <div class="col">
                <h4>Preview:</h4>
                <div class="form__preview">
                    {{ $preview }}
                </div>
            </div>
        </div>
    @endisset
</form>

Контроллер: В своем действии я выполняю свое действие sendMail

public function mail(PotentialClientRequest $request)
{
    $sendMail = new PotentialClientAction();
    $res = $sendMail->execute($request);

    return back()->with($res);
}

Действие: Здесь мы возвращаем Просмотр или отправляем почту (и возвращаем сообщение об успехе).

<?php

namespace App\Http\Actions;

use App\Mail\PotentialClientMail;
use Illuminate\Support\Facades\Mail;
use Illuminate\Foundation\Http\FormRequest;

class PotentialClientAction
{
    public function execute(FormRequest $request): array
    {
        $contact = $this->getData($request);
        $mail = new PotentialClientMail($contact);
        $response = [];

        switch ($request->input('action')) {
            case 'mail':
                $response = $this->mail($mail);
                break;
            case 'preview':
                $response = $this->preview($mail);
                break;
            default:
                break;
        }

        return $response;
    }

    private function mail(PotentialClientMail $mail): array
    {
        Mail::to(env('MAIL_FROM_ADDRESS'))->queue($mail);

        return [
            'success' => 'Mail successfully sent!'
        ];
    }

    private function preview(PotentialClientMail $mail): array
    {
        return [
            'preview' => $mail->render()
        ];
    }

    private function getData(FormRequest $request): array
    {
        $data = $request->validated();
        $contact = [
            'email' => $data['email'] ?? '-',
            'email_cc' => $data['email_cc'] ?? '-',
            'subject' => $data['subject'] ?? '-',
            'body' => $data['body'] ?? '-'
        ];

        return $contact;
    }
}

Отправляется по почте:

public function build()
{
    return $this
        ->subject($this->data['subject'])
        ->markdown('backend.mails.client')
        ->with([
            'email' => $this->data['email'],
            'email_cc' => $this->data['email_cc'],
            'subject' => $this->data['subject'],
            'body' => $this->data['body']
        ]);
}

Просмотр почты:

@component('mail::message')
<p>Hi Foo,</p>

@component('mail::panel')
<p>
<strong>My email is:</strong> <a href="mailto:{{ $email }}">{{ $email }}</a><br>
<strong>My email_cc is:</strong> <a href="mailto:{{ $email_cc }}">{{ $email_cc }}</a><br>
<strong>My subject is:</strong> {{ $subject }}<br>
<strong>It's about:</strong>
</p>
<p>{{ $body }}</p>
@endcomponent

@component('mail::button', ['url' => 'mailto:' . $email])
Reply
@endcomponent

Company name,<br>
{{ config('app.name') }}
@endcomponent
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...