控制器方法中的某些業務流程經常是重複的 ,比如輸入驗證 、使用者認證 、授權等
如果想要一個結構來進行規範化 ,可以使用 Laravel 的表單請求可以將這些常見行為從控制器方法中提取出來
表單請求是一個自定義的請求類 。它的目的是對映到提交表單 、負責驗證請求 、授權使用者 ,並將使用者重定向到失敗的驗證( 可選 )
php artisan make:request CreateCommentRequest
建立出的檔案內容如下
// app/Http/Requests/CreateCommentRequest.php
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class CreateCommentRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
// 這個方法如果返回 true ,使用者就會被授權執行對應的請求( 不知道對應的請求是什麼別急 ,繼續往下看 )
// 如果返回 false ,Laravel 會返回 403 Forbidden 錯誤 ,而不執行路由程式碼
return false;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
// 這個方法返回一個規則陣列
// 如果對應的請求沒有通過這個驗證規則 ,就會像 Laravel 控制器的 validate() 方法一樣( 將使用者重定向到上一頁 ,並快閃記憶體使用者輸入以及錯誤資訊 )
// 這裡不理解的可以參考下 Laravel 的 "驗證器" 和 "訊息包"
return [
//
'title' => 'required'
];
}
}
使用表單請求很簡單 ,我們以上面例子中生成的表單請求類為例
// 任何指定 (type-hint) 表單請求的路由都會自動進行 App\Http\Requests\CreateCommentRequest 中定義的驗證
Route::post('comments', function(App\Http\Requests\CreateCommentRequest $request){
//
});
本作品採用《CC 協議》,轉載必須註明作者和本文連結