下面由laravel教程欄目給大家介紹用Laravel發(fā)一封“漂洋過海”的電子郵件,希望對需要的朋友有所幫助!
引言
電子郵件從其誕生以來就大大地提升了人們的效率,傳統(tǒng)的綠色的郵箱那種送信方式,已經(jīng)被傳輸在光纜上的一束束通訊信息取代。
電子郵件同時(shí)帶來了垃圾信息的侵?jǐn)_,隨著國內(nèi)社交類APP的普及,電子郵箱漸漸地趨于專業(yè)化。
本期先不講如何發(fā)郵件,我們先準(zhǔn)備一個(gè)表單,把郵件需要的數(shù)據(jù)準(zhǔn)備好。
創(chuàng)建Form表單
首先使用命令行創(chuàng)建一個(gè)restful風(fēng)格的控制器:
php?artisan?make:controller?ContactController
接著在 routes/web.php 路由文件內(nèi)注冊資源類路由地址:
Route::get('contact',?'ContactController@create')->name('contact.create'); Route::post('contact',?'ContactController@store')->name('contact.store');
我們先實(shí)現(xiàn) create方法渲染表單的視圖:
namespace?AppHttpControllers;use?IlluminateHttpRequest; use?AppHttpRequests; class?ContactController?extends?Controller?{ ????public?function?create() ????{ ????????return?view('contact.create'); ????}
然后用我們講過的 FormBuilder 創(chuàng)建一個(gè)發(fā)電子郵件的表單,主要字段有
-
name : 發(fā)送方姓名
-
email : 接收方的電子郵箱地址
-
msg : 郵件內(nèi)容
下面是視圖文件內(nèi)表單的輸入字段:
{!!?Form::open(['route'?=>?'contact.store'])?!!}<p> ????{!!?Form::label('name',?'Your?Name')?!!} ????{!!?Form::text('name',?null,?['class'?=>?'form-control'])?!!}</p><p> ????{!!?Form::label('email',?'E-mail?Address')?!!} ????{!!?Form::text('email',?null,?['class'?=>?'form-control'])?!!}</p><p> ????{!!?Form::textarea('msg',?null,?['class'?=>?'form-control'])?!!}</p>{!!?Form::submit('Submit',?['class'?=>?'btn?btn-info'])?!!}{!!?Form::close()?!!}
注意表單是包裹在 open 與 close 之間的。
驗(yàn)證數(shù)據(jù)
表單創(chuàng)建之后,我們要寫接收表單數(shù)據(jù)的方法,在接收處理之前,一定要對數(shù)據(jù)的有效性進(jìn)行驗(yàn)證。
還記得我們前面講的內(nèi)容嗎,使用 FormRequest 對象驗(yàn)證表單字段。
在命令行創(chuàng)建一個(gè)表單驗(yàn)證器:
php?artisan?make:request?ContactFormRequest
為了簡化邏輯起見,我們要多所有調(diào)用該驗(yàn)證器的代碼,無論任何權(quán)限都要強(qiáng)制驗(yàn)證。修改 authorize 方法:
public?function?authorize(){ ????return?true;}
然后定義驗(yàn)證規(guī)則,內(nèi)置的規(guī)則足夠了:
public?function?rules(){ ????return?[ ????????'name'?=>?'required', ????????'email'?=>?'required|email', ????????'msg'?=>?'required' ????];}
組合起來
有了表單提交,有了驗(yàn)證器,我們接著要處理這些數(shù)據(jù),并寫入數(shù)據(jù)庫。在控制器 ContactController 的 store 方法內(nèi)寫入如下代碼。
在頭部引入驗(yàn)證器:
use?AppHttpRequestsContactFormRequest;
使用依賴注入方式調(diào)用:
public?function?store(ContactFormRequest?$request){ ????$contact?=?[]; ????$contact['name']?=?$request->get('name'); ????$contact['email']?=?$request->get('email'); ????$contact['msg']?=?$request->get('msg'); ????//?郵件發(fā)送邏輯代碼 ????return?redirect()->route('contact.create');}
寫在最后
發(fā)送郵件是一件操作系統(tǒng)與應(yīng)用程序綜合起來的事情,上面第三節(jié)中郵件發(fā)送的邏輯代碼,
我們在下一篇文章給出。
本文雖小,卻講述了從表單到驗(yàn)證再到數(shù)據(jù)交互的方方面面,從中可對laravel處理流程有所了解。? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ?