2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Laravel でabort()の使い方

Posted at

この記事の背景

ユーザーの編集機能を作っていた時のことです。
コントローラーを作成した時に、もしログインしていなかったら
エラーではなく、アクセスできない画面を出すように指示がありました。
この時に使いました。この時にabort()のことを知りました。

abort()とは

ユーザーのリクエストが違っていた時に、真っ白なページではなく「Not found」のようなエラーページになると親切です。こういう時に必要です。

実際のユースケース

UsersController.php
public function edit($id)
    {
       #都合により省略
            $data = [
                'user' => $user
            ];
            return view('users.edit', $data);
        }
        abort(404);
    }

ログインしていないユーザーが編集できないようにします。
今回のケースだと404(認証できないので見せられません)となります。
ログインしたユーザーではないからですね。

abort404

Laravelのコントローラでabort(404)のヘルパーを書くと予期しないエラーが発生した時に、
Not Foundページの代わりにリダイレクトして違うページに飛ばしたいとき、
redirect()のヘルパーをabort()と同じように好きな場所で使えないみたいです。

redirect()は、以下のようにreturnが必要です。

class ProductController extends Controller
{
    public function show(Product $product)
    {
        if ($product->active_flag == 'N') { // 無効な商品なら、
            return redirect('home'); // ホームページにリダイレクト
        }
 
        return view('user.product.show')->with(compact('product')); // 商品のページを表示
    }
}

 引用  https://www.larajapan.com/2020/07/25/abort%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%83%AA%E3%83%80%E3%82%A4%E3%83%AC%E3%82%AF%E3%83%88/

ステータスコード種類

この記事を参考にしてみてください。

資料

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?