使用 Blade 视图模板与发送消息的模板

Using Blade Templates for Views vs those to send Messages

我正在使用 Laravel 5 并创建了一个应用程序,该应用程序的发票中包含订单,订单中包含项目。我有一个使用 blade 模板创建的漂亮视图。现在我想通过电子邮件发送该发票 - 与它在视图中显示的完全一样。从我读过的内容来看,您不能只将 object 传递给消息,而必须创建一个数组。对吗?

我想将相同的数组传递给 blade 模板和消息。我的问题是,当我将数组传递给消息时,我不得不像这样访问变量:

{{ $order_number }}

当我将数组传递给 blade 模板时,我必须像这样以数组形式访问它:

{{ $invoice['invoice_number'] }}

这是我的消息代码:

public function sendInvoice($invoice_id)
{
    $invoice = new \App\Invoice;
    $arrInvoice = $invoice->createInvoiceArray($invoice_id);
    $data = $arrInvoice;
    \Mail::send('messages.invoices.cls', $data, function($message) use ($data)
    {
        $message->from('dylan@dylanglockler.com', 'Dylan Glockler');
        $message->to('dylan@dylanglockler.com', 'Love Laundry')->subject('CLS Tracking - Invoice');
    });
}

我一定是哪里做错了 - Laravel 太热心了,我想我一定是做错了什么!

为此,您需要利用 laravel 的 toArray() 功能。

public function sendInvoice($invoice_id)
{
    $arrInvoice = \App\Invoice::find($invoice_id)->toArray();
    $data['arrInvoice'] = $arrInvoice;
    \Mail::send('messages.invoices.cls', $data, function($message)
    {
        $message->from('dylan@dylanglockler.com', 'Dylan Glockler');
        $message->to('dylan@dylanglockler.com', 'Love Laundry')->subject('CLS Tracking - Invoice');
    });
}

那么在你看来:

{{$arrInvoice['invoice_number']}}

您必须将数据从对象转换为数组的原因是,如果您选择使用队列,laravel 可以访问这些信息。

来源:http://laravel.com/docs/4.2/eloquent#converting-to-arrays-or-json