【Laravel】ブレードの中でルート名やURLを取得する方法。Request::の中身やメソッドと$reqeustとの違い

Laravelのビューで`Request`や`$request`を使うと現在のページのルート名やURIなどを簡単に取得できる。

この`Reqeust::`と`$request`の違いと、よく使うメソッドについてのまとめ。


##目次

1. [`Reqeust::`と`$request`の違い](#reqeustとrequestの違い)
1. [コントローラで依存注入する例](#コントローラで依存注入する例)
1. [`Request`（`$request`）で使える便利なメソッド一覧](#requestrequestで使える便利なメソッド一覧)
1. [`Request`（`$request`）で渡されたデータの取得方法](#requestrequestで渡されたデータの取得方法)
1. [ルートの情報を取得する方法](#ルートの情報を取得する方法)
1. [ルート名の取得（`Route`を使うと簡単）](#ルート名の取得routeを使うと簡単)
1. [`Request`（`$request`）の中身](#requestrequestの中身)




<br>
##`Reqeust::`と`$request`の違い
どちらも同じ中身で、ページへのリクエスト情報を指している。

`Reqeust::`はファサードで、どのビューでも使うことができる。

`$request`は変数。これを使うにはコントローラで依存注入し、ビューに変数を渡す必要がある。


<br>
##コントローラで依存注入する例
▼依存注入の例

```php::UserController.php
class UserController extends Controller
{
    public function show(int $user_id, Request $request){
        return view('user.show', [ 'id'=>$user_id, 'request' => $request ]);
    }
}
```

####・`アクション名(Request $request){}`
依存注入。これで、ページに渡されたリクエストの情報を$requestとして関数の中で使える。

####・`view('ビュー名', [ 'request' => $request ])`
ビューにデータを渡すには第２引数で指定する。これでビューの中で$requestが使えるようになる。


###`Request`と`$request`の変換
基本的に入れ替えるだけ。一番最初のメソッドのつなげ方が、`::`か`->`で異なる。

**▼ルート名の取得**

```
Request::route()->getName()
```

↑↓　同じ

```
$request->route()->getName()
```


<br>
**▼指定したルート名に一致するか調べる**　

```
Request::routeIs('ルート名')
```

↑↓　同じ

```
$request->routeIs('ルート名')
```


<br>
##`Request`（`$request`）で使える便利なメソッド一覧
ブレードの中で使える便利なメソッド


| メソッド | 内容 |
|:--|:--|
| route()->getName()  |  ルート名の取得 |
| routeIs('ルート名')  | 指定したルート名と一致するか調べる。一致する場合は`1`を一致しない場合は空になる。  |
| is('URI')   | 指定したURLと一致するか調べる。一致する場合は`1`を一致しない場合は空になる。  |
| url()  | URLを取得する。パラメータは無視する。  |
| fullUrl()  | URLを取得する。パラメータも取得。  |
| method()  | メソッド名を取得する。  |

###実例

```php:.blade.php
<div>route()->getName()：{{ Request::route()->getName() }}</div>
<div>routeIs()1：{{ Request::routeIs('user.show') }}</div>
<div>routeIs()2：{{ Request::routeIs('user/5') }}</div>
<div>is()1：{{ Request::is('user.show') }}</div>
<div>is()2：{{ Request::is('user/5') }}</div>
<div>url()：{{ Request::url() }}</div>
<div>fullUrl()：{{ Request::fullUrl() }}</div>
<div>method()：{{ Request::method() }}</div>
```

　↓　ブラウザの表示


|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/9aac13f0-1a11-afcf-415d-0d035f07837e.png)|
|:--|

他にもあります。[Laravel公式ページ Request](https://readouble.com/laravel/8.x/ja/requests.html)


<br>
##`Request`（`$request`）で渡されたデータの取得方法
フォームなどGETやPOSTメソッドで渡されたデータを取得するには`all`メソッドが使える。

※注：戻り値は配列なのでビューの中でそのまま呼び出すとエラーになる。

```
dump($request->all())
```

▼http://127.0.0.1:8000/user/5?test=dummy の例

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/9d52c134-34ea-0ab3-ea16-8e1054115c31.png)

パラメータで渡したデータがKey-Valueで取得できる。


<br>
##ルートの情報を取得する方法

`Request::route()`を使うとルートの情報を配列で取得できる。


▼http://127.0.0.1:8000/user/5?test=dummy の例

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/459db8d5-2561-3403-8cd9-0abd6f053581.png)




<br>
###ルート名の取得（`Route`を使うと簡単）
ルート名を取得する場合は`Route`ファサードを使うとより簡単に記述できる。

```
Route::currentRouteName()
```

↑↓　同じ

```
Request::route()->getName()
```


<br>
##`Request`（`$request`）の中身
依存注入後にコントローラの関数の中で`dump($request);`を使うと、変数の中身をブラウザで確認できる。

ビューで確認した場合は`@php dump($request) @endphp`で確認可能。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/c3a54804-5b03-a04d-a455-f87860adf8ef.png)


<br>
以上。