阅读(3414) (10)

Laravel 8 通过 with 方法

2021-07-05 17:12:39 更新

如果您想要在邮件数据发送到模板前自定义它们的格式,您可以使用 with 方法来手动传递数据到视图中。一般情况下,您还是需要通过 mailable 类的构造函数来传递数据;不过,您应该将它们定义为 protectedprivate 以防止它们被自动传递到视图中。然后,在您调用 with 方法的时候,您可以以数组的形式传递您想要传递给模板的数据:

<?php

namespace App\Mail;

use App\Models\Order;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class OrderShipped extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * 订单实例。
     *
     * @var \App\Models\Order
     */
    protected $order;

    /**
     * 创建一个消息实例。
     *
     * @param  \App\Models\Order $order
     * @return void
     */
    public function __construct(Order $order)
    {
        $this->order = $order;
    }

    /**
     * 构造消息。
     *
     * @return $this
     */
    public function build()
    {
        return $this->view('emails.orders.shipped')
                    ->with([
                        'orderName' => $this->order->name,
                        'orderPrice' => $this->order->price,
                    ]);
    }
}