Laravelでルート名を活用すると、ブレードの中でaタグのリンクをルート名で指定したり、現在表示されているページのルート名を調べて条件分岐をすることができる。
リンク先URLをルート名で指定する方法
・href="{{ route( 'ルート名' ) }}"
データを渡す場合は第2引数に配列として渡す。
・href="{{ route( 'ルート名' ), [ 'キー名' => '値' ] }}"
実例
以下のようにルーティングを設定している場合のaタグのhref
はルート名で指定できる。
・/product
のルート名を「product」
・/product/{product_id}
のルート名を「product.show」
<a href="{{ route('product') }}">
<a href="{{ route('product.show', [ 'product_id' => '001' ]) }}">
▼ルーティング例
Route::group(['prefix' => 'product', 'as' => 'product'], function(){
Route::get('/', 'ProductController@intex'); //ルート名「product」
Route::get('/{product_id}', 'ProductController@show')->name('.show'); //ルート名「product.show」
});
ProductControllerのindexアクションとshowアクションに飛ばす。
ルート名を使った条件分岐
ルート名を使った条件分岐の方法は、ルート名取得して比較する方法と、ルート名が指定したルートか判定するメソッドを使う方法がある。
また、ファサード(Request::
やRoute::
)を使う方法と依存注入で渡されたリクエスト($request
)を使う方法がある。
ルート名を取得して比較する
ルート名を取得する方法
ルート名を取得する方法はいくつかある。以下はどれを使っても同じ。
・Request::route()->getName()
・Route::currentRouteName()
・Route::getCurrentRoute()->getName()
RequestファサードかRouteファサードを使っている。それぞれのファサードで使えるメソッドが異なる。
構文はファサード名::メソッド1->メソッド2->メソッド3,,,
。
実例
<div>ルート名1:{{ Request::route()->getName() }}</div>
<div>ルート名2:{{ Route::currentRouteName() }}</div>
<div>ルート名3:{{ Route::getCurrentRoute()->getName() }}</div>
↓ ブラウザの表示
![]() |
---|
ルート名を使った条件分岐
if文の中でルート名を比較すれば条件分岐ができる。
・@if( Route::currentRouteName() === 'ルート名' )
実例
@if ( Route::currentRouteName() === 'user.show' )
<p>true</p>
@else
<p>false</p>
@endif
↓ ブラウザの表示
![]() |
---|
指定したルート名か判定する
routeIsメソッドを使うと指定したルート名か判定できる。
・Request::routeIs('ルート名')
指定したルート名に一致する場合は1
が返る。一致しない場合は空(null)が返る。
実例
<div>routeIs1:{{ Request::routeIs('user.show') }}</div>
<div>routeIs2:{{ Request::routeIs('false') }}</div>
↓ブラウザの表示
![]() |
---|
if文の中で使えば簡単に条件分岐ができる。
@if ( Request::routeIs('user.show') )
<p>true</p>
@else
<p>false</p>
@endif
$request
を使う方法
これまでのRequest::
の部分を$request
で表記することもできる。
この場合はコントローラでRequest
を依存注入し、ビューに変数$reqeust
として渡す必要がある。
▼依存注入の例
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 ])
ビューにデータを渡すには第2引数で指定する。これでビューの中で$request
が使えるようになる。
ルート名を取得する
Request::route()->getName()
↓ 同じ
$request->route()->getName()
ルート名に一致するか調べる
Request::routeIs('ルート名')
↓ 同じ
$request->routeIs('ルート名')
以上。