Laravel表單驗證類的手動啟用方式
阿新 • • 發佈:2021-07-10
以下是一個標準的驗證類。
namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class ArticleRequest extends FormRequest { public function authorize() { return true; } public function rules() { return [ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]; } public function messages() { return [ 'title.required' => '標題必填', 'title.unique' => '標題已存在', 'title.max' => '標題長度不能超過:max', ‘body.required’ => '內容必填', ]; } }
一般我們在控制器中可以以依賴注入的方式啟用它,例如:
use App\Http\Requests\ArticleRequest; class ArticleController extends Controller { public function create(Request $request) { return view('article.create'); } public function store(ArticleRequest $request) { //如進入到這裡說明引數驗證通過,可以繼續新增操作 ... } }
當然,如果非要把新增的展示與儲存都寫在create方法中,通過判斷區分哪個操作,有什麼辦法呢?當然有,程式碼如下:
class ArticleController extends Controller { public function create(Request $request) { if ($request->ajax() && $request->isMethod('POST')) { //新增儲存邏輯 //手動啟用表單驗證類 $validator = app('App\Http\Requests\ArticleRequest'); } //新增展示頁面 return view('article.create'); } }
參考:https://github.com/laravel/framework/issues/7995#issuecomment-82269811