天天看點

3分鐘短文:用Laravel發一封“漂洋過海”的電子郵件

引言

電子郵件從其誕生以來就大大地提升了人們的效率,傳統的綠色的郵箱那種送信方式,

已經被傳輸在光纜上的一束束通訊資訊取代。

電子郵件同時帶來了垃圾資訊的侵擾,随着國内社交類APP的普及,電子郵箱漸漸地趨于專業化。

3分鐘短文:用Laravel發一封“漂洋過海”的電子郵件

本期先不講如何發郵件,我們先準備一個表單,把郵件需要的資料準備好。

建立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領域原創作者