Entity·Screen·Layout·Field

최종 수정: 2026년 7월 12일

Entity·Screen·Layout·Field

Entity

Orbit는 Eloquent 모델을 직접 건드리지 않고, 별도 Entity 클래스로 관리자 CRUD를 설명합니다. EntityRegistry에 등록된 엔티티를 기준으로 메뉴, 권한, CRUD 라우트와 화면이 구성됩니다.

use App\Orbit\Entities\PostEntity; use CmsOrbit\Core\Foundation\Entity\EntityRegistry; $this->app->afterResolving(EntityRegistry::class, function (EntityRegistry $registry): void { $registry->registerClass([PostEntity::class]); });

간단한 Entity 예시:

use CmsOrbit\Core\Foundation\Entity\Entity; use CmsOrbit\Core\Screen\Fields\Input; use CmsOrbit\Core\Screen\TD; class PostEntity extends Entity { public function model(): string { return Post::class; } public function fields(): array { return [ Input::make('title')->title('제목')->required(), ]; } public function columns(): array { return [ TD::make('title', '제목'), ]; } }

DocumentEntity

DocumentEntity는 다국어 문서형 콘텐츠를 위한 엔티티입니다. documents / document_contents 공용 테이블을 사용하며, announcement·popup 패키지가 이를 활용합니다.

Screen / Layout / Field

PHP에서 Screen을 정의하면 JSON으로 직렬화되어 React가 렌더링합니다.

  • Screen — 하나의 관리자 화면 (목록, 생성, 수정 등)
  • Layout — 화면 내 구조 (Rows, Table, Tabs, Modal 등 약 30종)
  • Field — 입력 요소 (Input, Select, RichText, Matrix 등 약 30종)

이 계약은 CONTRACT.md에 정본으로 문서화되어 있으며, PHP 직렬화 계층과 React 렌더러가 반드시 일치해야 합니다.

orbit_config()

설정 값은 다음 계층으로 폴백됩니다.

  1. 인스턴스별 설정
  2. 전역 설정
  3. 타입 기본값

XpressEngine 3의 chain-of-responsibility 폴백에서 영감을 받은 구조입니다.