Active
인증된 제출자watson/active
현재 라우트, 컨트롤러, 액션을 감지하는 Laravel 헬퍼
Active for Laravel
Active는 현재 경로(path)나 라우트를 손쉽게 감지할 수 있도록 도와주는 Laravel 헬퍼 패키지입니다. Bootstrap의 active 클래스처럼, 특정 라우트가 활성화되어 있을 때만 CSS 클래스를 적용하거나 특정 동작을 수행해야 할 때 유용합니다. 현재 컨트롤러명과 액션명을 가져오는 헬퍼 함수도 함께 제공합니다.
목차
설치
Composer로 패키지를 설치합니다.
composer require watson/activeNOTE
Laravel 5.1을 사용 중이라면 2.0.4 버전까지만 지원됩니다.
설치 후 config/app.php의 providers 배열에 서비스 프로바이더를 등록합니다.
Watson\Active\ActiveServiceProvider::class,Facade를 사용하려면 같은 파일의 aliases 배열에도 추가합니다.
'Active' => Watson\Active\Facades\Active::class,사용법
헬퍼 함수 목록
이 패키지는 Facade나 별도 인스턴스 없이 바로 사용할 수 있는 전역 헬퍼 함수를 제공합니다.
active()
is_active()active() 사용법
확인하고 싶은 라우트나 경로를 배열로 전달하면, 현재 페이지가 그 중 하나와 일치할 때 'active' 문자열을 반환합니다. Bootstrap의 active 클래스를 적용할 때 특히 편리합니다.
// 현재 라우트가 배열 중 하나와 일치하면 'active' 반환
active(['login', 'users/*', 'posts.*', 'pages.contact']);
// 일치하면 'active-class' 반환
active(['login', 'logout'], 'active-class');
// 일치하지 않으면 'fallback-class' 반환
active(['login', 'logout'], 'active-class', 'fallback-class');인자 형식 설명
| 형식 | 예시 | 설명 |
|---|---|---|
| 경로 문자열 | 'login' | 현재 경로가 정확히 login일 때 |
| 와일드카드 경로 | 'users/*' | users/로 시작하는 모든 경로 |
| 라우트 이름 | 'posts.*' | posts.으로 시작하는 이름의 라우트 |
| 정확한 라우트 이름 | 'pages.contact' | 라우트 이름이 정확히 pages.contact일 때 |
Blade 뷰에서 활용 예시
내비게이션 링크에 활성 클래스를 자동으로 적용할 때 아래처럼 사용합니다.
<a href="{{ route('posts.index') }}" class="{{ active('posts.index') }}">전체 글</a>특정 경로 제외하기
not: 접두사를 사용하면 특정 경로나 라우트를 판단에서 제외할 수 있습니다.
// pages/ 하위 경로에서 활성이지만, pages/contact는 제외
active(['pages/*', 'not:pages/contact'])
// 라우트 이름 기준으로 제외
active(['pages.*', 'not:pages.contact'])is_active() 사용법
active()와 동일한 방식으로 경로와 라우트를 전달하지만, 문자열 대신 boolean 값을 반환합니다. 조건 분기가 필요할 때 유용합니다.
@if (is_active('posts/*'))
지금 블로그 포스트를 보고 있습니다!
@endif추가 헬퍼 함수
컨트롤러가 요청을 처리하는 경우, 현재 컨트롤러명과 액션명을 소문자로 반환하는 헬퍼도 제공합니다. HTTP 메서드(get, post 등)는 이름에서 제외됩니다.
예를 들어 FooController@getBar로 라우팅된 요청의 경우:
$controller = controller_name(); // 'foo'
$action = action_name(); // 'bar'라이선스
Active for Laravel은 MIT 라이선스 하에 완전히 무료로 제공되는 오픈소스 패키지입니다.
이 패키지는 Treeware 프로젝트에 참여하고 있습니다. 프로덕션 환경에서 사용하고 있다면, 지구에 나무 한 그루 심기에 동참해 주세요. 이 활동은 지역 일자리 창출과 야생동물 서식지 복원에 기여합니다.
