[Laravel] Blade 에서 route 사용하기

[Laravel] Blade 에서 route 사용하기 updated_at: 2024-07-16 14:27

Blade 에서 route 사용하기

<a href="{{ route('routeName') }}">Profile</a>
<a href="{{ route('routeName', [params..]) }}">
{!! Html::link(route('routeName', [params..]), 'display text', ['class' => '', 'id'=>''...]) !!}

Activate 처리

특정링크 활성화 클래스 넣기

Route Name 으로 처리

Single Route - By Name

// true if the current route is the dashboard
request()->routeIs('dashboard'); // Route::getCurrentRouteName() 와 유사
 
// true if the current route is dashboard or dashboard/list
request()->routeIs('dashboard.*')
 
// true if the current route is dashboard/list but not dashboard/create or dashboard
request()->routeIs('dashboard.list')
 
// true if the current route is in the expenses group (expenses, expenses/create, expenses/1/edit)
request()->routeIs('expenses.*')

Multiple Routes - By Name

request()->routeIs(['expenses.*', 'bank-accounts.*'])

Url path를 이용한 처리

request()->is('settings/*'); // Request::is('settings/*')
request()->is('settings*'); 
request()->path(); // 단일 url 만 가능 // Request::path()

<a class="{{ request()->is('settings/*') ? 'active' : '' }}">
<a class="{{ request()->path() == ('settings/') ? 'active' : '' }}">

url()->current() 를 이용한 처리

위의 Route Name 으로 처리할 경우 parameter를 받지 못하는 번그러움이 존재한다.
따라서 파라미터를 받아서 처리하려면 아래와 같이 처리 하여야 한다.

  <a class="{{ url()->current() === route('settings', $params) ? 'active' : '' }}"

서브카테고리가 많을 경우 상위 카테고리 활성화 시킬경우 아래방법처럼 미리 선언해 두었도 좋다.

@php
  $cscenter = '';
  if (
    Request::path() == 'cs-center/AccountChange' ||
    Request::is('cs-center/Faq/*') ||
  ) {
    $cscenter = 'on';
  }
@endphp
평점을 남겨주세요
평점 : 5.0
총 투표수 : 1

질문 및 답글