延續上一篇,這篇要來分享怎麼用比較好維護的方式寄HTML格式的信。
大致邏輯是用一個Laravel專門的mail model做信件內容的創建,視覺的部分再另外引用一個html檔,讓php code和html code分開管理。
首先是創建model。
跟之前一樣在terminal專案目錄下用php artisan make,model名字我就叫他Notification吧!
php artisan make:mail Notification
model檔案內容大致如下。可以透過變數客製化每封信,比方說信件內容大部分是有個模板,但對象可以帶入不同用戶的資料,例如名字。
public $name;
public function __construct(string $name)
{
$this->name = $name; //可以傳到html的view檔案做使用
$this->subject = 'Notification to '.$name; //信件標題
}
public function build(){
return view('example_mail'); //引用html的view檔案
}
記得檔名要叫xxx.blade.php,然後放在resource/views
目錄下。
內容我就簡單demo,第一行是帶入model傳來的名字。也可以增加其他變數,例如連結或圖片。
<p>Hello, {{$name}}.</p>
<p>This is an nitification mail.</p>
跟上篇類似,寫法如下。記得在開頭引用Mail和一開始做的mail model: Notification
use Illuminate\Support\Facades\Mail as Mail;
use App\Mail\Notification as Notification;
public function send()
{
request()->validate(['email'=>'required|email']);
Mail::to(request('email'))->send(new Notification('Amy Chen'));//主要跟上次差別在這行
return redirect('/')->with('message', 'email sent');
}
有三個部分在實作這個功能:controller、mail model、view。
controller是檢查使用者輸入的內容、和帶入不同使用者客製化的訊息。
mail model設定這信的標題或一些資訊。
view則是信的內容,可帶入controller和model傳過來的變數。