Laravelでフォームのバリデーションはどのように行うのが適切なのでしょうか?
参考書を見てもいろいろなやり方があって混乱しています。
(1) コントローラのvalidateメソッドを使う。↓
PHP
1//ルートは Route::post('hello', 'HelloController@post'); とする 2 3//App\Http\Controllers\HelloController.php 4class HelloController extends Controller 5{ 6 public function post(Request $request){ 7 $rule = [ 8 'name' => 'required', 9 'mail' => 'email', 10 ]; 11 $this->validate($request, $rule); 12 return view('hello.form'); 13 } 14}
(2) フォームリクエストを作り、POSTリクエストがコントローラに渡される前にバリデーションする↓
PHP
1// App\Http\Requests\HelloRequest.php 2class HelloRequest extends FormRequest 3{ 4 public function rules(){ 5 return [ 6 'name' => 'required', 7 'mail' => 'email', 8 ]; 9 } 10}
PHP
1// App\Http\Requests\HelloRequest.php 2class HelloController extends Controller 3{ 4 public function post(HelloRequest $request){ 5 return view('hello.form'); 6 } 7} 8
(3) コントローラ内でValidatorクラスのインスタンスを使う↓
PHP
1// App\Http\Requests\HelloRequest.php 2class HelloController extends Controller 3{ 4 public function post(Request $request){ 5 $validator = Validator::make($request->all(), [ 6 'name' => 'required', 7 'mail' => 'email', 8 ]); 9 return view('hello.form'); 10 } 11}
(3)はエラーがあった時、フォームにリダイレクトせずに他の処理を行うことができたりと一番汎用的に使えますか?
Laravelを使っている方、教えていただきたいです。
回答1件
あなたの回答
tips
プレビュー