Laravel 5.5 を勉強しています。
お問い合わせのフォームのようなものを試しに作成していますが、エラー処理の際に
エラーの有無で切り分けたいと思っています。
単に、テンプレートファイル内にコードを入れて見えづらくするのを回避したいためです。
構想を書くと
if エラーあり
//エラー内容と入力内容を表示
return view("input_error.blade");
else
//確認画面
return view("confirm.blade");
という形にしたいと思っています。
公式ドキュメントを参考にすると
エラー時に
if($validator->fails()) { return redirect('/input_error')->withErrors($validator)->withInput(); }
としなければいけないのかなと考え込んでしまいました。
これをすると入力値がセッションから取得をしなければいけないようで手間があるように思います。
このようなリダイレクトを回避することは可能でしょうか?
そもそも、リダイレクトをしなければいけないでしょうか?
現状以下のようにしています。
namespace App\Http\Controllers; use Validator; use Illuminate\Http\Request; class Contact extends Controller { // public function index(){ return view('input'); } //confirm public function confirm(Request $request){ header('Expires:-1'); header('Cache-Control:'); header('Pragma:'); $validator = Validator::make($request->all(), [ 'name'=>'required|min:6|max:10', 'email'=>'required|email|confirmed', 'sex'=>'required', 'contents'=>'required|max:10', ]); //if fails if($validator->fails()) { return redirect('/input_error')->withErrors($validator)->withInput(); } $name = Request::input('name'); $email = Request::input('email'); $sex = Request::input('sex'); $contents = Request::input('contents'); return view('confirm',compact('name','sex','email','contents')); } public function input_error(){ return view('input_error'); } // public function thanks(){ return view('thanks'); }
web.php
Route::get('/input', 'Contact@index'); Route::post('/input_error', 'Contact@input_error'); Route::get('/input_error', 'Contact@input_error'); Route::post('/confirm', 'Contact@confirm'); Route::get('/thanks', 'Contact@thanks');
としてます。
リダイレクトをしなくても
変数、エラーメッセージが普通に取得し表示できるでしょうか?
宜しくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/20 09:02
2018/01/20 09:07
2018/01/20 09:10
2018/01/20 09:28
2018/01/22 03:25