PHP↔React 직렬화 계약
최종 수정: 2026년 7월 12일
PHP↔React 직렬화 계약
packages/cms-orbit/core/CONTRACT.md에 정의된 JSON 데이터 계약입니다. PHP src/Screen/*와 React resources/js/*가 반드시 일치해야 합니다.
ScreenProps
Screen이 직렬화되면 React screen-renderer.tsx가 받는 최상위 props:
screen— 화면 ID, 제목, 레이아웃 트리orbit— 공유 prop (menu, permissions, brand, notifications, media)state— Screen 상태 (폼 값, 선택 등)errors— 유효성 검사 오류
LayoutNode / FieldNode
- LayoutNode —
type,props,children(Table, Rows, Tabs 등) - FieldNode —
type,name,value,props(Input, Select 등) - ColumnNode — 테이블 컬럼 정의
Entity CRUD 라우트
Entity 등록 시 자동 생성되는 라우트:
| 메서드 | 경로 | 설명 |
|---|---|---|
| GET | /admin/{entity} | 목록 |
| GET | /admin/{entity}/create | 생성 폼 |
| POST | /admin/{entity} | 저장 |
| GET | /admin/{entity}/{id}/edit | 수정 폼 |
| PUT | /admin/{entity}/{id} | 업데이트 |
| DELETE | /admin/{entity}/{id} | 삭제 |
TypeScript 미러
resources/js/contract.ts가 PHP 계약의 TypeScript 미러입니다. 커스텀 필드/레이아웃 추가 시 양쪽을 함께 수정해야 합니다.