Files
Gnuboard7/templates/_bundled/gnuboard7-hello_user_template/docs/layouts.md
T
HeuJung 6c63536f81 docs(core,extensions): 확장 20개 개발자 문서 완비와 문서 소유 이관
번들 확장 20개 전부에 AGENTS.md · README.md · docs/ 를 채우고, 코어가 들고
있던 확장 소유 문서 두 갈래를 그 확장으로 옮긴다. 번들 템플릿의 컴포넌트·
핸들러·레이아웃 상세와 확장이 구독하는 활동 로그 훅 목록이 그 대상이며,
코어에는 총계와 링크만 남아 확장이 기능을 늘릴 때 코어 문서를 고쳐야 하던
역방향 의존이 사라진다.

전수 완비를 확인하고 강제를 조인다 — 문서 동반 룰을 대상 목록 없는 error 로
승격하고, 검사 스크립트가 문서 미보유를 실패로 올리며, 미채움 마커 baseline 을
0 으로 기록한다. 한쪽만 조이면 "새 확장이 문서 없이 들어와도 초록" 인 상태가
남는데 그 결과는 이상 0건과 구분되지 않는다.

집필 과정에서 드러난 생성기 결함 셋을 함께 고친다. 스케줄 주기 열이 계약 키를
읽지 않아 모든 확장에서 '-' 였고, 네임스페이스를 붙인 핸들러 등록 키가 수집에서
통째로 빠졌으며, README 골격이 폐기된 히어로 배지를 계속 찍어내고 있었다.
셋 다 산출물이 아니라 원천이 틀린 것이라, 가드의 모집단에 생성기 출력 자체를
넣어 다음 확장이 같은 상태로 태어나는 경로를 막는다.
2026-08-31 22:57:36 +09:00

4.3 KiB

Hello 사용자 템플릿 — 레이아웃

레이아웃 목록과 라우트 매핑 · 진입점: AGENTS.md

레이아웃 목록

레이아웃 8개 (루트: layouts).

그룹 개수
(root) 2개
errors 6개
레이아웃 그룹 종류 extends
_user_base (root) partial -
401 errors 화면 _user_base
403 errors 화면 _user_base
404 errors 화면 _user_base
500 errors 화면 _user_base
503 errors 화면 _user_base
maintenance errors 화면 _user_base
home (root) 화면 _user_base

8개 중 6개가 오류 레이아웃입니다. 오류 6종(401 · 403 · 404 · 500 · 503 · maintenance)은 선택이 아니라 최소 구성입니다 — 코어가 그 상황에서 활성 템플릿의 레이아웃을 부르는데 없으면 방문자에게 백지가 됩니다.

나머지 둘이 베이스(_user_base)와 홈(home)입니다. 홈이 이 샘플의 학습 포인트로, data_sources 로 학습용 모듈의 메모 API 를 auto_fetch 호출해 목록을 그립니다 (loading_strategy: progressive). 모듈이 데이터를, 템플릿이 화면을 담당하는 경계가 이 한 파일에 들어 있습니다.

여덟 모두 _user_base 를 상속합니다. extends 없는 독립 레이아웃을 만들면 그 화면에서는 toast·openModal 이 성공으로 기록되지만 화면에는 아무것도 나타나지 않습니다(호스트 컴포넌트가 마운트되지 않아서).

401 레이아웃에서 로그인 리다이렉트를 직접 구현하지 않습니다 — 코어 TemplateApp.showRouteError 가드가 처리하므로, 여기서 다시 이동시키면 이중 리다이렉트가 되고 돌아올 위치도 어긋납니다.

레이아웃 JSON 만 고쳤다면 빌드 없이 php artisan template:update gnuboard7-hello_user_template --force 로 반영합니다.

라우트 매핑

경로 레이아웃 이름
/ home -

하나뿐입니다 — / → home, 그리고 auth_required: false.

로그인 없이 접근하는 화면임을 선언하는 것이 이 플래그의 역할입니다. User 템플릿의 대부분 화면이 그렇고, 마이페이지처럼 회원 전용인 화면만 true 로 둡니다. 빠뜨리면 방문자가 첫 화면에서 로그인으로 튕깁니다.

오류 레이아웃에는 라우트가 없습니다 — 코어가 상황을 보고 직접 부르므로 경로로 도달하는 화면이 아닙니다.

실제 템플릿에서는 라우트 경로에 표현식을 쓸 수 있습니다(sirsoft-basic 의 상점 경로가 이커머스 설정을 반영하듯). 이 샘플은 정적 경로 하나로 최소 형태만 보입니다.

라우트를 바꾼 뒤에는 template:update --force 로 반영합니다.

확장 오버라이드

오버라이드하는 레이아웃 확장 조각이 없습니다.

없습니다. 이 샘플은 다른 확장이 제공한 조각을 대체하지 않습니다.

오버라이드는 extensions/{확장}/ 에 그 확장의 조각과 같은 이름의 파일을 두면 성립합니다 — 플러그인이 제공한 조각의 디자인이 이 템플릿과 어긋날 때 조각을 고치는 대신 템플릿이 자기 버전을 얹는 방향입니다.

그 대가로 원본이 바뀌어도 사본은 따라가지 않습니다. 오버라이드를 두었다면 그 확장을 업그레이드한 뒤 동작을 확인해야 합니다 — 원본이 핸들러 이름이나 필드 계약을 바꾸면 오버라이드만 옛 계약을 붙들고 있게 되고, 증상은 "그 자리만 무반응" 으로 나타납니다.