iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 26
1

前言

延續上一篇,這篇要來分享怎麼用比較好維護的方式寄HTML格式的信。
大致邏輯是用一個Laravel專門的mail model做信件內容的創建,視覺的部分再另外引用一個html檔,讓php code和html code分開管理。

mail model file

首先是創建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檔案
}

view file

記得檔名要叫xxx.blade.php,然後放在resource/views目錄下。
內容我就簡單demo,第一行是帶入model傳來的名字。也可以增加其他變數,例如連結或圖片。

<p>Hello, {{$name}}.</p>
<p>This is an nitification mail.</p>

controller file

跟上篇類似,寫法如下。記得在開頭引用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傳過來的變數。


上一篇
Laravel:寄信之一
下一篇
Laravel幫你做好的會員登入系統
系列文
網頁後端的30件小事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言