Я использую Laravel 5 и создал приложение, которое имеет счета, которые содержат заказы, которые содержат элементы. У меня есть хороший вид, созданный с помощью шаблона лезвия. Теперь я хочу отправить этот счет по электронной почте — именно так, как он отображается в представлении. Из того, что я прочитал, вы не можете просто передать объект в сообщение, но должны создать массив. Это верно?
Я хотел бы передать этот же массив шаблону блейда и сообщению. Моя проблема в том, что когда я передаю массив сообщению, я вынужден обращаться к переменным следующим образом:
{{ $order_number }}
и когда я передаю массив в шаблон блейда, я должен получить к нему доступ как к массиву, например так:
{{ $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('[email protected]', 'Dylan Glockler');
$message->to('[email protected]', 'Love Laundry')->subject('CLS Tracking - Invoice');
});
}
Я, должно быть, здесь что-то делаю не так — Ларавел так заинтересован, я думаю, что я делаю что-то не так!
Вы хотите подключиться к Laravel’s 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('[email protected]', 'Dylan Glockler');
$message->to('[email protected]', 'Love Laundry')->subject('CLS Tracking - Invoice');
});
}
Тогда по вашему мнению:
{{$arrInvoice['invoice_number']}}
Причина, по которой вам нужно преобразовать ваши данные из объекта в массив, заключается в том, что Laravel может получить доступ к информации, если вы когда-либо решите использовать очереди.
Источник: http://laravel.com/docs/4.2/eloquent#converting-to-arrays-or-json
Других решений пока нет …