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

  • LayoutNodetype, props, children (Table, Rows, Tabs 등)
  • FieldNodetype, 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 미러입니다. 커스텀 필드/레이아웃 추가 시 양쪽을 함께 수정해야 합니다.