引言
電子郵件從其誕生以來就大大地提升了人們的效率,傳統的綠色的郵箱那種送信方式,已經被傳輸在光纜上的一束束通訊資訊取代。
電子郵件同時帶來了垃圾資訊的侵擾,隨著國內社交類APP的普及,電子郵箱漸漸地趨於專業化。
本期先不講如何發郵件,我們先準備一個表單,把郵件需要的資料準備好。
建立Form表單
首先使用命令列建立一個restful風格的控制器:
php artisan make:controller ContactController
接著在 routes/web.php 路由檔案內註冊資源類路由地址:
Route::get('contact', 'ContactController@create')->name('contact.create');
Route::post('contact', 'ContactController@store')->name('contact.store');
我們先實現 create方法渲染表單的檢視:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
class ContactController extends Controller {
public function create()
{
return view('contact.create');
}
然後用我們講過的 FormBuilder 建立一個發電子郵件的表單,主要欄位有
name : 傳送方姓名
email : 接收方的電子郵箱地址
msg : 郵件內容
下面是檢視檔案內表單的輸入欄位:
{!! Form::open(['route' => 'contact.store']) !!}
<div class="form-group">
{!! Form::label('name', 'Your Name') !!}
{!! Form::text('name', null, ['class' => 'form-control']) !!}
</div>
<div class="form-group">
{!! Form::label('email', 'E-mail Address') !!}
{!! Form::text('email', null, ['class' => 'form-control']) !!}
</div>
<div class="form-group">
{!! Form::textarea('msg', null, ['class' => 'form-control']) !!}
</div>
{!! Form::submit('Submit', ['class' => 'btn btn-info']) !!}
{!! Form::close() !!}
注意表單是包裹在 open 與 close 之間的。
驗證資料
表單建立之後,我們要寫接收表單資料的方法,在接收處理之前,一定要對資料的有效性進行驗證。
還記得我們前面講的內容嗎,使用 FormRequest 物件驗證表單欄位。
在命令列建立一個表單驗證器:
php artisan make:request ContactFormRequest
為了簡化邏輯起見,我們要多所有呼叫該驗證器的程式碼,無論任何許可權都要強制驗證。修改 authorize 方法:
public function authorize()
{
return true;
}
然後定義驗證規則,內建的規則足夠了:
public function rules()
{
return [
'name' => 'required',
'email' => 'required|email',
'msg' => 'required'
];
}
組合起來
有了表單提交,有了驗證器,我們接著要處理這些資料,並寫入資料庫。在控制器 ContactController 的 store 方法內寫入如下程式碼。
在頭部引入驗證器:
use App\Http\Requests\ContactFormRequest;
使用依賴注入方式呼叫:
public function store(ContactFormRequest $request)
{
$contact = [];
$contact['name'] = $request->get('name');
$contact['email'] = $request->get('email');
$contact['msg'] = $request->get('msg');
// 郵件傳送邏輯程式碼
return redirect()->route('contact.create');
}
寫在最後
傳送郵件是一件作業系統與應用程式綜合起來的事情,上面第三節中郵件傳送的邏輯程式碼,
我們在下一篇文章給出。
本文雖小,卻講述了從表單到驗證再到資料互動的方方面面,從中可對laravel處理流程有所瞭解。
Happy coding :-)
我是@程式設計師小助手,專注程式設計知識,圈子動態的IT領域原創作者
本作品採用《CC 協議》,轉載必須註明作者和本文連結