escuelademusica/laravel-mjml

0.1.2 2022-03-14 07:07 UTC

This package is auto-updated.

Last update: 2024-09-14 12:34:26 UTC


README

安装

composer require escuelademusica/laravel-mjml

您需要通过 npm 安装 MJML

npm install --save mjml

您可以通过在 .env 文件中添加以下内容来自定义 MJML 文件的路径: MJML_BINARY_PATH=/path/to/mjml/bin/mjml

使用方法

有两种方式可以使用此包。

1. 扩展我们的自定义邮件类

<?php

namespace App\Mail;

use EscuelaDeMusica\MJML\Mail\Mailable;

class CustomMailable extends Mailable
{

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->mjml('view.name',);
    }
}

2. 使用 InteractsWithMjml 特性与 laravel mailable

这与 CustomMailable 的工作方式相同,但您不需要扩展 mailable。您可以使用此特性与任何 laravel mailable 一起使用,但请记住编辑 render 函数,使其看起来像这样

<?php

namespace App\Mail;

use Illuminate\Mail\Mailable;
use EscuelaDeMusica\MJML\InteractsWithMjml;

class SomeEmail extends Mailable
{
    use InteractsWithMjml;

    public function buildView()
    {
        if (isset($this->mjml)) {
            return $this->buildMjmlView();
        }

        return parent::buildView();
    }

    public function build ()
    {
        return $this->mjml('view.name');
    }

    public function render()
    {
        return $this->renderMjml();
    }
}

对于您在 toMail 方法中使用的 laravel 通知,您通常会返回一个 MailMessage 实例。该包扩展了这个类,并向其中添加了 mjml 函数。要使用 mjml 邮件进行通知,您需要扩展该包提供的 MjmlMessage。

<?php

namespace App\Notifications;

use EscuelaDeMusica\MJML\Mail\Messages\MjmlMessage;

class SomeNotification extends Notification
{
    public function toMail($notifiable)
    {
        return (new MjmlMessage)
            ->subject('Notification Subject')
            ->mjml('notification.name');
    }
}

它的工作原理。

要包含其他文件到您的 mjml 中,您可以使用 mj_include 指令。该指令接受文件的路径和 mjml-include 类型。

@mjml('view.name');

这受到 (https://github.com/asahasrabuddhe/laravel-mjml) 的启发,但更优化。编译了视图编译文件的 mjml。

此外