如何更改 Laravel Mailable 模板中的页眉徽标?

How to change Header Logo in Laravel Mailable template?

我想将 logomailablesmarkdown templateheader 更改为 Laravel。

原版views/vendor/mail/html/header.blade.php:

<tr>
<td class="header">
<a href="{{ $url }}" style="display: inline-block;">
@if (trim($slot) === 'Laravel')
<img src="https://laravel.com/img/notification-logo.png" class="logo" alt="Laravel Logo">
@else
{{ $slot }}
@endif
</a>
</td>
</tr>

我想将 img src 更改为:

<img src={{ $content }} class="logo" alt="Logo">

变量 $content 来自可邮寄 ContactMail.php:

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\DB;
use phpDocumentor\Reflection\DocBlock\Tags\Var_;

class ContactMail extends Mailable implements ShouldQueue
{
    use Queueable, SerializesModels;

    public function __construct()
    {
        $this->content = "storage/hg5zkMDJTAWaIjc8hH5jqtb5FGmOXfpccha2k0A4.png";

        return $this->markdown('emails.contact');
    }

    public function build()
    {
        return view('vendor.mail.html.header')->with('content', $this->content);
    }
}

但最终抛出:

ErrorException
Undefined variable $content (View: C:\Users\Artur\PhpstormProjects\stuttard.de\resources\views\vendor\mail\html\header.blade.php)

$content is undefined

如何将 $content 正确传递给 header.blade.php

编辑:

ContactController.php:

<?php

namespace App\Http\Controllers;

use App\Mail\ContactMail;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;


class ContactController extends Controller
{
    public function test()
    {
        return new ContactMail();
    }
}

你传递的是变量数据而不是内容 将您的代码更改为

<img src={{ $data }} class="logo" alt="Logo">

添加了更多答案
试试这个你需要先定义 $content 变量

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\DB;
use phpDocumentor\Reflection\DocBlock\Tags\Var_;

class ContactMail extends Mailable implements ShouldQueue
{
    use Queueable, SerializesModels;

    public $content;

    public function __construct()
    {
        $this->content = "storage/hg5zkMDJTAWaIjc8hH5jqtb5FGmOXfpccha2k0A4.png";

        return $this->markdown('emails.contact');
    }

    public function build()
    {
        return view('vendor.mail.html.header')->with('content', $this->content);
    }
}

我想 运行:

php artisan vendor:publish --tag=laravel-mail

一组新的可自定义 blade files 创建于:

/resources/views/vendor/mail/html

这些是可邮寄模板的构建块,可以进行编辑。