Слоты
Точки размещения
Все доступные точки инъекции в интерфейсе Frame
Каждый location — это именованная точка в интерфейсе, куда можно встроить компонент. Locations определены в enum Frame\Core\Enums\SlotLocation на бэкенде.
Авторизация
| Location | Enum | Место |
|---|---|---|
login-before-form | LOGIN_BEFORE_FORM | Перед формой входа |
login-after-form | LOGIN_AFTER_FORM | После формы входа |
login-sidebar | LOGIN_SIDEBAR | Правая панель страницы входа (только десктоп) |
Все login-locations являются публичными — доступны без авторизации через
GET /slots.Ресурсы
| Location | Enum | Место | Context |
|---|---|---|---|
resource-page-actions | RESOURCE_PAGE_ACTIONS | Справа от breadcrumbs на странице просмотра записи | resource, resourceId, record |
resource-edit-actions | RESOURCE_EDIT_ACTIONS | Справа от breadcrumbs на странице редактирования записи | resource, resourceId, record |
resource-before-form | RESOURCE_BEFORE_FORM | Перед формой записи | — |
resource-after-form | RESOURCE_AFTER_FORM | После формы записи | — |
resource-before-relations | RESOURCE_BEFORE_RELATIONS | Перед блоком связей | — |
resource-after-relations | RESOURCE_AFTER_RELATIONS | После блока связей | — |
resource-page-actions — только просмотр, resource-edit-actions — только редактирование. Если компонент нужен в обоих режимах, зарегистрируйте его в оба location.Context для resource-page-actions / resource-edit-actions
<script lang="ts" setup>
const props = defineProps<{
resource: string // имя ресурса ('users', 'posts')
resourceId: number // ID записи
record: { // данные записи из API
title: string
label: string
group?: string
}
}>()
</script>
Дашборд
| Location | Enum | Место |
|---|---|---|
dashboard-before-cards | DASHBOARD_BEFORE_CARDS | Перед карточками дашборда |
dashboard-after-cards | DASHBOARD_AFTER_CARDS | После карточек дашборда |
Глобальные
| Location | Enum | Место |
|---|---|---|
global-before-content | GLOBAL_BEFORE_CONTENT | Перед основным контентом на всех страницах |
global-after-content | GLOBAL_AFTER_CONTENT | После основного контента на всех страницах |
header-banner | HEADER_BANNER | Баннер в шапке приложения |
Глобальные locations являются публичными — доступны без авторизации.
Мультитенантность
| Location | Enum | Место |
|---|---|---|
tenant-switcher | TENANT_SWITCHER | Переключатель тенанта |
tenant-switcher — защищённый location: приходит через GET /meta только для авторизованных пользователей (у неавторизованного нет тенантов для переключения).Публичные vs защищённые
Каждый location имеет флаг isPublic(). Публичные locations обслуживаются через GET /slots без авторизации — это необходимо для страницы входа. Защищённые locations приходят через GET /meta только для авторизованных пользователей.
SlotLocation::LOGIN_BEFORE_FORM->isPublic() // true
SlotLocation::RESOURCE_PAGE_ACTIONS->isPublic() // false