본문 바로가기

ORBIT ORIGINAL GUIDE

PHP↔React 직렬화 계약

CMS Orbit CONTRACT.md — ScreenProps, LayoutNode, FieldNode, async/state 모델.

최종 수정 2026년 7월 12일

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 미러입니다. 커스텀 필드/레이아웃 추가 시 양쪽을 함께 수정해야 합니다.