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()
설정 값은 다음 계층으로 폴백됩니다.
- 인스턴스별 설정
- 전역 설정
- 타입 기본값
XpressEngine 3의 chain-of-responsibility 폴백에서 영감을 받은 구조입니다.