はじめに
withErrorsで処理失敗時のエラーメッセージを出力する例をいくつか挙げています。
withErrorsはエラーが発生したら、セッションにエラーメッセージをフラッシュデータとして保存し、エラー表示をさせる事ができます。
目次
例外処理のエラーハンドリング
public function store(Request $request)
{
DB::beginTransaction();
try {
// 何らかのDB登録処理
DB::commit();
} catch (\Exception $e) {
DB::rollback();
return redirect()->back()->withErrors('エラーが発生しました');
}
return view('index');
}
CRUD処理失敗時
public function destroy(Post $post)
{
return $post->delete()
? redirect()->action([PostController::class, 'index'])->with('flash_message', '投稿の削除が成功しました。')
: redirect()->action([PostController::class, 'index'])->withErrors('投稿の削除に失敗しました。');
}
バリデーション失敗時
public function post(Request $request)
{
$validator = $this->post_validator($request->all());
if ($validator->fails()) {
// バリデーション失敗時
return redirect('index')
->withErrors($validator)
->withInput();
} else {
// バリデーション通過後の処理
}
}
protected function post_validator(array $data)
{
return Validator::make($data, [
'content' => ['required']
]);
}