Laravel 5.5 を勉強しています。
お問い合わせのフォームのようなものを試しに作成していますが、エラー処理の際に
エラーの有無で切り分けたいと思っています。
単に、テンプレートファイル内にコードを入れて見えづらくするのを回避したいためです。
構想を書くと
if エラーあり
//エラー内容と入力内容を表示
return view("input_error.blade");
else
//確認画面
return view("confirm.blade");
という形にしたいと思っています。
実際には
//入力 Route::get('/contact', 'Contact@index'); Route::post('/input_error', 'Contact@input_error'); Route::post('/confirm', 'Contact@confirm'); Route::get('/thanks', 'Contact@thanks');
public function index(){ return view('miyawaki.input'); } public function confirm(Request $request){ $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'); }
入力画面のformの遷移先は /confirm としています。そこでエラーの有無で振り分け、
エラーがあった時のinput_error.blade.php の遷移先も /confirmとしています。
このようなことができればテンプレートのHTMLもスッキリするのでありがたいです。
現時点のエラーは
「Call to undefined method Illuminate\Support\Facades\Request::all()」となっています。
いろいろ調べながらやっていますが、うまくいかず悩んでいます。
宜しくお願いいたします。
(追記)
input_errorにリダイレクトができたのですが、
今度は
「MethodNotAllowedHttpException」というエラーが発生しています。
この解決方法についていろいろと調べているのですが、
解決方法が見つかりません。
ご存知の方がいらっしゃいましたら、教えていただけるでしょうか?
宜しくお願いいたします。
※自己解決しました
route に
Route::get('/input_error', 'Contact@input_error');
(追記)
POST送信したデータならびにエラーメッセージが表示されません。
Undefined variable: name
return redirect('/input_error')->withErrors($validator)->withInput();
でエラーメッセージと入力データが送信されると思うのですが、違うのでしょうか?
宜しくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/19 10:00
2018/01/20 05:47
2018/01/20 05:54
2018/01/20 05:58
2018/01/20 06:17
2018/01/20 06:23
2018/01/20 06:28 編集
2018/01/20 06:30