Метод markdown
Метод markdown класса MailMessage указывает,
какой Markdown-шаблон использовать для формирования
содержимого письма. Первым параметром передаётся
путь к шаблону, вторым - массив данных для передачи
в представление (необязательно). Метод возвращает
экземпляр MailMessage для построения цепочки
методов.
Синтаксис
<?php
use Illuminate\Notifications\Messages\MailMessage;
$message = (new MailMessage)
->markdown($view, $data);
?>
Пример
Давайте создадим уведомление с использованием стандартного шаблона Laravel:
<?php
namespace App\Notifications;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use Illuminate\Notifications\Messages\MailMessage;
class UserNotification extends Notification
{
use Queueable;
private $userName;
public function __construct($userName)
{
$this->userName = $userName;
}
public function via($notifiable)
{
return ['mail'];
}
public function toMail($notifiable)
{
return (new MailMessage)
->markdown('emails.user_notification', [
'userName' => $this->userName
]);
}
}
?>
Результат выполнения кода (содержимое письма):
<div>
<h1>User Notification</h1>
<p>Hello, John Doe!</p>
<p>This is a notification for you.</p>
</div>
Пример
Давайте создадим кастомное уведомление с действием:
<?php
namespace App\Notifications;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use Illuminate\Notifications\Messages\MailMessage;
class OrderNotification extends Notification
{
use Queueable;
private $orderId;
public function __construct($orderId)
{
$this->orderId = $orderId;
}
public function via($notifiable)
{
return ['mail'];
}
public function toMail($notifiable)
{
return (new MailMessage)
->greeting('Hello!')
->line('Your order #' . $this->orderId . ' is ready.')
->action('View Order', url('/orders/' . $this->orderId))
->markdown('emails.order_ready', [
'orderId' => $this->orderId
]);
}
}
?>
Результат выполнения кода:
<div>
<h1>Order Ready</h1>
<p>Your order #12345 is ready.</p>
<a href="http://example.com/orders/12345">View Order</a>
</div>
Пример
Давайте создадим уведомление с использованием пользовательского Markdown-шаблона:
@component('mail::message')
# Custom Notification
Hello {{ $userName }},
Your account has been successfully updated.
Thanks,<br>
{{ config('app.name') }}
@endcomponent
<?php
namespace App\Notifications;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use Illuminate\Notifications\Messages\MailMessage;
class AccountNotification extends Notification
{
use Queueable;
private $userName;
public function __construct($userName)
{
$this->userName = $userName;
}
public function via($notifiable)
{
return ['mail'];
}
public function toMail($notifiable)
{
return (new MailMessage)
->markdown('emails.custom', [
'userName' => $this->userName
])
->subject('Account Updated');
}
}
?>
Результат выполнения кода:
<div>
<h1>Custom Notification</h1>
<p>Hello John Doe,</p>
<p>Your account has been successfully updated.</p>
<p>Thanks,<br>Laravel App</p>
</div>
Пример
Давайте отправим уведомление пользователю с помощью
метода markdown:
<?php
namespace App\Http\Controllers;
use App\Models\User;
use App\Notifications\UserNotification;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function notifyUser($userId)
{
$user = User::find($userId);
$userName = $user->name;
$user->notify(new UserNotification($userName));
$res = "Notification sent to user: " . $userName;
echo $res;
}
}
?>
Результат выполнения кода:
"Notification sent to user: John Doe"
Смотрите также
-
метод
line,
который добавляет строку текста в письмо -
метод
greeting,
который устанавливает приветствие в письме -
метод
action,
который добавляет кнопку с действием в письмо -
класс
MailMessage,
который используется для построения писем