ORBIT ORIGINAL GUIDE
Entity·Screen·Layout·Field
CMS Orbit Entity, DocumentEntity, Screen/Layout/Field 서버 주도 UI 계약의 핵심 개념.
최종 수정 2026년 7월 12일
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()
설정 값은 다음 계층으로 폴백됩니다.
- 인스턴스별 설정
- 전역 설정
- 타입 기본값
XpressEngine 3의 chain-of-responsibility 폴백에서 영감을 받은 구조입니다.