PHP/Laravel
PR

Laravelのbladeファイル内で現在のURLによって条件分岐させる方法

shiro-changelife
記事内に商品プロモーションを含む場合があります

こんにちは、シロウ(shiro_life0)です。

LaravelでWebアプリを作っていると、テンプレートファイル(bladeファイル)内でURLによって条件を分岐させたいという場合があると思います。

そこで、今回の記事では『URLによって条件処理をする方法』を紹介していきます。

方法としては2つあるので、ぜひ参考にしてください。

LaravelでURLによって条件分岐させる方法

2つの方法を紹介しますが、②の方法の方がオススメです。

①:『Request::is()』を使う方法

まず1つ目の方法は『Request::is()』を使用する方法です。

使用方法としては「()の中にドメイン後のURLを記述するだけ」です。

具体的な使用方法は以下の通り。

@if(Request::is('users'))
        <p>成功</p>
@endif

このようにすれば「https:://~~~ ドメイン名~~~/uesrs」にアクセスした時にif文内の処理(成功)が 表示されます。

ローカル環境なら「http://localhost:8000/users」とかにアクセスすればif文内の処理が呼び出されるということです。

ちなみに下記のように「*(アスタリスク)」も使えます。

@if(Request::is('users/*'))
        <p>成功</p>
@endif

念のために「*(アスタリスク)」の解説もしておくと、「*」は「全部」って意味です。

つまり、上記の処理だと「https:://~~~ ドメイン名~~~/uesrs/○○」ってな感じで、○○の部分がなんでもOKということです。

②:『Request::routeIs()』を使う方法

次に紹介するのがrouteIs()を使用する方法です。

使用方法としては「()の中にルーティング名を記述するだけ」です。

使用方法としては下記の通り。

@if(Request::routeIs('users.index'))
        <p>成功</p>
@endif

これだけなのでとっても簡単ですね。

この方法の注意点としては名前付きルートにしか使用できないことです。

例えば上記のように「users.index」を使用するなら、下記のように名前付きルートを作成する必要があります。

Route::get('users', 'UsersController@index')->name('users.index');

//下記の記述でもOK
Route::resource('users', 'UsersController');

resourceを使えば自動的に名前付きルートが作成されます。
長くなってしまうので、この辺りは各自調べてくださいm(_ _)m

ちなみに「*(アスタリスク)」を使うこともできます。

@if(Request::routeIs('users.*'))
        <p>成功</p>
@endif

「Route::is」で書くこともできる。

ちなみにですが、下記のように「Route::is」という書き方も「Request::routeIs」と同じです。

@if(Route::is('users.index'))
        <p>成功</p>
@endif

お好きな方をお使いください。

【補足】URLによってクラスを付けたり外したりしたい場合

おそらくURLによってクラスを付与したり、付与しなかったりとしたい時って多いかと思います。

そのような時は『三項演算子』を使いましょう。

例えば『「https:://~~~ ドメイン名~~~/uesrs」にアクセスしている時はactiveクラスを付与したい』という時は下記のように記述します。

//三項演算子を使わなかった場合
@if(Request::routeIs('users.index'))
    <p class="active">アクティブクラスを付与</p>
@else
    <p>アクティブクラスを付与しない</p>
@endif


//三項演算子を使った場合
<p class="{{ Request::routeIs('users.index') ? 'side-active' : '' }}">
    usersにアクセスしていたらactiveクラスを付与
</p>

みて分かる通り、三項演算子を使った方が大幅に記述を少なくできます。

ちなみに三項演算子の書き方は下記の通り。

条件 ? trueだった時の処理 : falseだった時の処理

そのため、クラスを付与したりしなかったりの処理は

<p class=”{{ 条件 ? trueだった時の処理 : falseだった時の処理  }}”>

とすれば実現できます。

さて、今回はこれにて終わりです。

もし参考になりましたら、Twitterとかでシェアしてもらえると嬉しいです(*´ω`*)ノ

それではまた!

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

  1. おじさん

    人に教える素振りならソースを画像で貼るのはいかがでしょう?
    役に立ちそうで嫌がらせされてる気分で不快です。

    • shiro-changelife

      コメントありがとうございます。
      画像で貼ると、ソースコードをコピーしたいと考えている人からすると不便だと思うので、このようにしています。

      一般的にソースコードなどの解説時は、ソースコードをコードブロックで表示する記事が多いと思うのですが、それらの記事に対しても不快に感じてらっしゃるのですか?(それとも僕の記事限定でしょうか?)

ABOUT ME
シロウ
シロウ
NFT・仮想通貨投資家 / エンジニア
仮想通貨・NFTに400万以上投資しています。

本業エンジニア・副業ブロガー。

ブログ最高月80万円。累計200万以上。
記事URLをコピーしました