Como personalizar modelos de e -mail de notificação Laravel 5/6

Como personalizar modelos de e -mail de notificação Laravel 5/6

Tudo bem, então eu encontrei esta edição de configurar um modelo de e -mail para o meu Laravel 5.4 App. Foi um e -mail de 'bem -vindo', usando o modelo de Laravel padrão. O desafio era mudar o cabeçalho e o rodapé do modelo.

Todos tentamos ler a documentação o mais rápido possível e se isso não funcionar, após 3 minutos completos lendo a documentação, mudaríamos para o StackOverflow, ou Laracasts ou qualquer outro fórum, esperando o código pronto 'Copiar e Colar'.

Continuar…

As coisas são fáceis se você deseja apenas alterar a mensagem de texto e você tem muitos exemplos sobre como fazê -lo, usando os componentes de email. No entanto, não encontrei nenhuma resposta sobre como alterar o cabeçalho padrão e o rodapé.

Componentes

Laravel 5.4 componentes apresentados por correio. Você pode ler sobre isso aqui.



$ slot

Este seria um componente de alerta, que é basicamente um modelo de lâmina. Então o $ slot seria uma variável/local para soltar seu conteúdo de outro modelo/componente.

@Component ('Alert')
Opa! Algo deu errado!
@endComponent

Assim. Isso renderizaria


Opa! Algo deu errado!

Publicar o fornecedor Publish

Inicialmente, o Laravel usará seus componentes escondidos no núcleo da estrutura, que você pode exportar fazendo

fornecedor artesanal de php: publicar--tag = laravel-mail

Ele criará uma pasta de correio e marcação dentro de seus recursos/pasta de recursos/vendidos. Dentro, você encontrará componentes como layout ou cabeçalho etc.

Criando notificação

O que você deseja fazer é criar uma notificação, evento ou aula de correio para disparar um e -mail quando algo acontecer.

Eu decidi ir com uma notificação. Ao criar qualquer notificação (você pode ler mais sobre como criar uma notificação via Artisan), você terá uma aula como esta:

namespace app \ notificações;
use iluminado \ barramento \ queueable;
use iluminado \ notifications \ notification;
use iluminado \ contratos \ fila \ devequim;
Use iluminado \ notificações \ mensagens \ MailMessage;
Classe User registrada estende a notificação

use queueable;
/**
* Variável de classe sem documentos
*
* @var string
**/
Public $ user;
/**
* Crie uma nova instância de notificação.
*
* @return void
*/
Função pública __construct ($ usuário)

$ this-> usuário = $ user;

/**
* Obtenha os canais de entrega da notificação.
*
* @param misto $ notificável
* Array @return
*/
Função pública via ($ notificável)

retornar ['Mail'];

/**
* Obtenha a representação do correio da notificação.
*
* @param misto $ notificável
* @return \ iluminate \ notificações \ mensagens \ MailMessage
*/
Função pública TOMAIL ($ notificável)

Retornar (New MailMessage)
-> de ('info@às vezes-isso vai trabalhar.com ',' admin ')
-> Assunto ('Bem -vindo ao Portal')
-> Markdown ('Mail.Bem-vindo.índice ', [' usuário '=> $ this-> usuário]);

/**
* Obtenha a representação da matriz da notificação.
*
* @param misto $ notificável
* Array @return
*/
Função pública ToArray ($ notificável)

retornar [
//
];

Aqui, preste atenção ao método do tomail, bem como ao construtor da classe, porque passaremos um objeto a ele. Observe também que estamos usando

-> Markdown ('Alguns.lâmina.php ');

O próximo passo é empurrar esta notificação para funcionar. Em algum lugar do seu registroController, você pode querer chamar isso (não entra em como você o executará, sincronizado ou fila ...). Não se esqueça de incluir o espaço para nome da notificação no topo.

$ user = user :: create ([
'Nome' => $ dados ['nome'],
'Email' => $ dados ['email'],
'LastName' => $ Data ['LastName'],
'Senha' => bCrypt ($ dados ['senha']),
]);
$ user-> notify (novo usuário registrado ($ usuário));

Por que estou indo tão profundo? Bem, porque eu também quero mostrar como transmitir seus dados para o modelo de e -mail.

Em seguida, você pode ir para Recursos/Views/Mail/Welcome/Index.lâmina.php (Pode ser qualquer pasta e nome do arquivo que você quiser) e colar esta:

@Component ('Mail :: Layout')
-cabeçalho-
@slot ('cabeçalho')
@Component ('Mail :: Header', ['URL' => Config ('App.url ')))
Título do cabeçalho
@endComponent
@endslot
-- Corpo --
Esta é a nossa principal mensagem $ user
-subcopy-
@isset ($ subcopy)
@slot ('subcopy')
@Component ('Mail :: Subcopy')
$ subcopy
@endComponent
@endslot
@endisset
-rodapé-
@slot ('rodapé')
@Component ('Mail :: Footer')
© date ('y') config ('app.nome') . Super rodapé!
@endComponent
@endslot
@endComponent

Agora você pode adicionar facilmente qualquer imagem ao seu cabeçalho ou alterar o link dentro do rodapé etc.

Espero que isto ajude.

Siga me no twitter
Adicione -me no LinkedIn