4
1

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.

miriwoお一人様Advent Calendar 2022

Day 1

laravel ルートネームに紐づくルーティング情報があるか判定する

Last updated at Posted at 2022-12-01

この記事はmiriwoお一人様 Advent Calendar 2022の1日目の記事です

概要

  • ルートネームに紐づくルーティング情報が存在するかを確認する方法をまとめる。

方法

  • Route::has()を用いる。

  • 下記の様に記載するで紐づくルーティング情報が存在すればtrueを、存在しない場合falseを返す。

    use Illuminate\Support\Facades\Route;
    
    Route::has('ルートネーム')
    
  • ルートネームに紐づくルーティング情報がなかった時にエラーを投げるような処理に使える。

    use Illuminate\Support\Facades\Route;
    
    if (!Route::has('ルートネーム')) {
        //エラー投げる処理
    }
    

余談

  • 上記の方法を知るまで、route()関数を使おうと思っていた。

  • route()関数は存在しないルートネームを引数に指定した場合、Symfony\Component\Routing\Exception\RouteNotFoundExceptionを返す。これをtryCatch文で検知しようと思っていた。

    Symfony\Component\Routing\Exception\RouteNotFoundException with message 'Route [ルートネーム] not defined.'
    
  • しかしroute()関数は引数のルートネームに紐づくルーティングにパスパラメーターが含まれていた場合、第二引数で配列で渡してあげないとURLを生成できない。

  • ルートネームに紐づくルーティングがあったとしてもパスパラメーターが含まれるルーティング情報の場合、引数をわたさないとSymfony\Component\Routing\Exception\RouteNotFoundExceptionを返すのでちょっと面倒

謝辞

  • 本内容は弊社の先輩エンジニアさんに教えていただきました。本当にありがとうございます!
  • 自身で日本語で検索した時は全然ヒットしなかった旨を先輩に伝えたところ「英語で検索したほうが情報量多いよ。今回だとlaravel route name exist checkとか!単語並べるだけでもヒットするよ!」と教えていただきました!本当にありがとうございます!

参考文献

4
1
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
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?