laravel电子邮件中的嵌套布局

时间:2016-05-05 10:22:13

标签: php laravel email

我正在使用我的应用程序的一部分,当时发送电子邮件,我希望电子邮件使用基本布局(品牌等),然后在其中加载单独的模板,特定于电子邮件类型,我知道你可以在使用控制器和视图时在这样的视图中进行布局,

protected $layout = 'layouts.master';

然而,在发送这样的电子邮件时,我找不到合适的方式来使用它,

Mail::send('emails.organisations.admin_removed', $array, function($message) use ($array) {
    $message->to("email@email.com", "Simon Ainley")
        ->from('sender@email.com', 'Email Sender')
        ->subject("Email Sender - Subject");
});

是否可以拥有主电子邮件模板,然后输入子视图?

2 个答案:

答案 0 :(得分:1)

呀!这是可能的。

您的主要模板(emails.orgainsations.template_layout.blade.php)

<head>

    <meta charset="utf-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <meta name="viewport" content="width=device-width, initial-scale=1"/>
    <meta name="description" content=""/>
    <meta name="author" content=""/>

    <title>{{config('app.project_name')}}</title> 
    <style>
       //your css goes here

    </style>
</head>

<body>
    <table width="600" cellspacing="0" cellpadding="0" border="0" class="wrap">
        <tbody>
            <tr>
                <td class="header">
                    <h1 class="logo" title="Logo"><img src="{{ asset('assets/images/logo-mail.png') }}" alt="logo" /></h1>
                </td>
            </tr>
            <tr>
                <td style="padding: 20px; border: 1px solid #8a35e1; color: #323232;">
                    @yield('content')

                </td>
            </tr>
        </tbody>
    </table>
</body>

您的子模板(emails.organisations.admin_removed)

   @extends('emails.orgainsations.template_layout')
   @section('content')
   <p>
      your mail content goes here
   </p>
   @endsection

并且,在邮件发送代码中,照常调用子模板

  Mail::send('emails.organisations.admin_removed', $array,   function($message) use ($array) {
$message->to("email@email.com", "Simon Ainley")
    ->from('sender@email.com', 'Email Sender')
    ->subject("Email Sender - Subject");
  });

答案 1 :(得分:0)

您要做的是创建主刀片模板,并在子刀片模板中完成扩展。然后将子模板传递给Mail::send()方法。

所以你有你的主人:电子邮件/布局/ master.blade.php

<html>
    <head>
        <title>Email Master</title>
    </head>
    <body>

        Dear {{ $recipient }}

        <div class="container">
            @yield('content')
        </div>

        Kind regards,

        @include('emails/signature')
    </body>
</html>

然后在子模板中扩展:电子邮件/布局/组织/ admin / remove.blade.php

@extends('emails.layouts.master')

@section('content')
    <p>You have been removed</p>
@endsection

然后将子视图传递给send方法:

Mail::send('emails.layouts.organisations.admin.remove', $array, function($message) use ($array) {
    $message->to("email@email.com", "Simon Ainley")
        ->from('sender@email.com', 'Email Sender')
        ->subject("Email Sender - Subject");
});

我已经在这里详细介绍了很多细节,因此我强烈建议您查看文档以获取更深入的详细信息:https://laravel.com/docs/5.2/blade

您还应该尝试熟悉刀片提供的所有不同指令,以充分利用其所有功能。