Laravel Folio는 Blade 파일을 배치하는 것만으로 라우트를 정의할 수 있는 페이지 기반 라우터입니다.
기존 routes/web.php 중심의 정의와 달리 파일 시스템 구조를 그대로 URL에 반영할 수 있습니다.
콘텐츠 중심의 사이트나 화면마다 빠르게 페이지를 추가하고 싶은 관리 화면에서 특히 효과적입니다.
API처럼 세밀한 HTTP 제어가 필요한 영역은 일반 라우팅과 병용하는 것이 실용적입니다.
먼저 Composer로 Folio를 추가합니다.
folio:install은 Folio의 서비스 프로바이더를 등록합니다.
기본적으로 resources/views/pages/가 페이지 디렉터리가 됩니다.
여러 페이지 디렉터리나 베이스 URI를 구분해서 사용하는 경우, 서비스 프로바이더의 boot에서 Folio::path()와 uri()를 설정합니다.
라우트 생성
Folio는 마운트된 디렉터리 아래의 Blade 파일명에서 URL을 자동으로 생성합니다.
중첩된 라우트
디렉터리를 중첩하면 URL도 같은 구조로 중첩됩니다.
인덱스 라우트
index.blade.php는 해당 디렉터리의 루트에 매핑됩니다.
라우트 파라미터
파일명의 []로 URL 세그먼트를 받을 수 있습니다.
여러 세그먼트를 받는 경우에는 ...을 사용합니다.
라우트 모델 바인딩
[User].blade.php처럼 모델명을 사용하면 자동으로 모델 해석됩니다.
소프트 삭제된 모델도 다루는 경우, 페이지 안에서 withTrashed()를 호출합니다.
[Post:slug].blade.php처럼 작성하면 id 이외의 키(예: slug)로도 모델 해석이 가능합니다.
미들웨어
특정 페이지에만 적용하는 경우, 페이지 템플릿 안에서 middleware()를 사용합니다.
여러 페이지에 일괄 적용하는 경우에는 Folio::path(...)->middleware()를 사용합니다.
이름 지정 라우트
Folio 페이지에도 name()으로 라우트 이름을 붙일 수 있습니다.
users/[User].blade.php처럼 개별 페이지 쪽에서 name('users.show')를 정의하면, 파라미터가 포함된 URL을 route('users.show', ['user' => $user])로 생성할 수 있습니다.
부여한 라우트 이름은 route() 헬퍼로 URL을 생성할 수 있습니다.
파일과 URL의 대응
기존 라우팅과의 비교
Folio를 사용하는 경우에도 php artisan route:cache로 라우트 캐시를 활성화하면 프로덕션 성능을 최적화할 수 있습니다.