번들 확장 20개 전부에 AGENTS.md · README.md · docs/ 를 채우고, 코어가 들고 있던 확장 소유 문서 두 갈래를 그 확장으로 옮긴다. 번들 템플릿의 컴포넌트· 핸들러·레이아웃 상세와 확장이 구독하는 활동 로그 훅 목록이 그 대상이며, 코어에는 총계와 링크만 남아 확장이 기능을 늘릴 때 코어 문서를 고쳐야 하던 역방향 의존이 사라진다. 전수 완비를 확인하고 강제를 조인다 — 문서 동반 룰을 대상 목록 없는 error 로 승격하고, 검사 스크립트가 문서 미보유를 실패로 올리며, 미채움 마커 baseline 을 0 으로 기록한다. 한쪽만 조이면 "새 확장이 문서 없이 들어와도 초록" 인 상태가 남는데 그 결과는 이상 0건과 구분되지 않는다. 집필 과정에서 드러난 생성기 결함 셋을 함께 고친다. 스케줄 주기 열이 계약 키를 읽지 않아 모든 확장에서 '-' 였고, 네임스페이스를 붙인 핸들러 등록 키가 수집에서 통째로 빠졌으며, README 골격이 폐기된 히어로 배지를 계속 찍어내고 있었다. 셋 다 산출물이 아니라 원천이 틀린 것이라, 가드의 모집단에 생성기 출력 자체를 넣어 다음 확장이 같은 상태로 태어나는 경로를 막는다.
4.1 KiB
Hello Admin Template — 레이아웃
레이아웃 목록과 라우트 매핑 · 진입점: AGENTS.md
레이아웃 목록
레이아웃 8개 (루트: layouts).
| 그룹 | 개수 |
|---|---|
(root) |
2개 |
errors |
6개 |
| 레이아웃 | 그룹 | 종류 | extends |
|---|---|---|---|
_admin_base |
(root) |
partial | - |
admin_dashboard |
(root) |
화면 | _admin_base |
401 |
errors |
화면 | _admin_base |
403 |
errors |
화면 | _admin_base |
404 |
errors |
화면 | _admin_base |
500 |
errors |
화면 | _admin_base |
503 |
errors |
화면 | _admin_base |
maintenance |
errors |
화면 | _admin_base |
8개 중 6개가 오류 레이아웃입니다. 이 비율이 이 샘플이 말하려는 것 그 자체입니다 — 오류 레이아웃 6종(401 · 403 · 404 · 500 · 503 · maintenance)은 선택이 아니라 최소 구성입니다.
코어는 오류 상황에서 활성 템플릿의 해당 레이아웃을 부릅니다. 없으면 그 오류를 표시할 수단이 없어 사용자에게는 백지가 되므로, 화면이 하나뿐인 템플릿에도 6종은 있어야 합니다.
여섯 모두 _admin_base 를 상속합니다. 오류 화면에서도 관리자 골격이 유지되고, 뼈대를 한 번
고치면 전 화면에 반영됩니다. extends 없는 독립 레이아웃을 만들면 그 화면에서는
toast·openModal 이 성공으로 기록되지만 화면에는 아무것도 나타나지 않습니다(호스트
컴포넌트가 마운트되지 않아서).
401 레이아웃에서 로그인 리다이렉트를 직접 구현하지 않습니다 — 코어
TemplateApp.showRouteError 가드가 처리하므로, 여기서 다시 이동시키면 이중 리다이렉트가 되고
돌아올 위치도 어긋납니다.
레이아웃 JSON 만 고쳤다면 빌드 없이
php artisan template:update gnuboard7-hello_admin_template --force 로 반영합니다.
라우트 매핑
| 경로 | 레이아웃 | 이름 |
|---|---|---|
*/admin |
admin_dashboard |
- |
하나뿐입니다 — */admin → admin_dashboard.
앞의 * 는 로케일 접두 등 가변 구간을 받는 자리입니다. Admin 템플릿의 라우트는 이 형태로
*/admin/... 네임스페이스 안에 있어야 하며, 그 밖의 경로를 선언하면 모듈·User 템플릿이 소유한
경로와 다투게 되고 어느 쪽이 이기는지가 설치 순서에 좌우됩니다.
오류 레이아웃에는 라우트가 없습니다 — 코어가 상황을 보고 직접 부르므로 경로로 도달하는 화면이 아닙니다.
라우트를 바꾼 뒤에는 template:update --force 로 반영합니다.
확장 오버라이드
오버라이드하는 레이아웃 확장 조각이 없습니다.
없습니다. 이 샘플은 다른 확장이 제공한 조각을 대체하지 않습니다.
오버라이드는 extensions/{확장}/ 에 그 확장의 조각과 같은 이름의 파일을 두면 성립합니다 —
플러그인이 제공한 조각의 디자인이 이 템플릿과 어긋날 때 조각을 고치는 대신 템플릿이 자기
버전을 얹는 방향입니다.
그 대가로 원본이 바뀌어도 사본은 따라가지 않습니다. 오버라이드를 두었다면 그 확장을 업그레이드한 뒤 동작을 확인해야 합니다 — 원본이 핸들러 이름이나 필드 계약을 바꾸면 오버라이드만 옛 계약을 붙들고 있게 되고, 증상은 "그 자리만 무반응" 으로 나타납니다.