Edycja układów formularzy
Edycja i publikacja układu powiązanego z formularzem obiektu własnego.
Użyj tej strony po utworzeniu formularza obiektu własnego. Wyjaśnia ona, jak edytować powiązany układ, aby formularz mógł być renderowany i używany w czasie działania.
Najważniejsza Zasada
Nie twórz osobnego układu i nie próbuj podpinać go do formularza.
Gdy tworzysz formularz, Opero tworzy jeden powiązany układ i zwraca viewLayoutId. Używaj tego ID układu do zapisywania wersji roboczych, publikacji, historii wersji i sprawdzania działania.
Każdy formularz ma dokładnie jeden powiązany układ. Obsługiwane tryby układu odzwierciedlają types formularza. Jeśli chcesz zmienić tryby, zaktualizuj formularz, a nie metadane układu.
API odrzuca próby utworzenia kolejnego układu DYNAMIC_OBJECT z target.formId, ponieważ układy formularzy są zarządzane przez formularz.
Zanim Zaczniesz
Potrzebujesz:
api.view_layouts.read, aby ładować metadane kreatora i szczegóły układu;api.view_layouts.manage, aby zapisywać wersje robocze i przywracać wersje jako wersje robocze;api.view_layouts.publish, aby publikować wersje robocze;viewLayoutIdzwróconego przez formularz.
Przykłady używają:
- klucza modułu:
crm; - klucza obiektu:
ticket; - ID formularza:
form_ticket_intake; - ID układu:
layout_ticket_intake.
Pobranie Metadanych Kreatora
Pobierz katalog bloków dla powierzchni formularza, trybu, obiektu i formularza:
GET /v1/view-layouts/catalog?surface=DYNAMIC_OBJECT&mode=CREATE&moduleKey=crm&objectKey=ticket&formId=form_ticket_intake
Authorization: Bearer ek_...Katalog mówi klientowi, jakie pola i bloki można dodać. Wpisy zawierają etykiety, kategorie, typ bloku, źródło, domyślną konfigurację bloku, schemat konfiguracji, obsługiwane tryby oraz flagi wymagania lub blokady.
Używaj katalogu zamiast wpisywać pola obiektu własnego na stałe w kliencie.
Pobierz definicje powierzchni, gdy budujesz nową wersję roboczą lub powłokę edytora:
GET /v1/view-layouts/surface-definitions?surface=DYNAMIC_OBJECT
Authorization: Bearer ek_...Definicje powierzchni opisują domyślne regiony, wymagane bloki i reguły rozmieszczania.
Zapis Wersji Roboczej
Zapis wersji roboczej utrwala zmiany układu, ale nie publikuje ich dla użytkowników.
PUT /v1/view-layouts/layout_ticket_intake/draft
Authorization: Bearer ek_...
Content-Type: application/json
{
"clientMutationId": "ticket-layout-draft-001",
"schemaVersion": 1,
"regions": [
{
"key": "main",
"label": "Main",
"layout": "grid",
"columns": 12,
"displayOrder": 0,
"config": {}
}
],
"blocks": [
{
"id": "field_title",
"type": "field",
"source": "dynamic_field",
"ref": { "fieldKey": "title" },
"regionKey": "main",
"displayOrder": 0,
"grid": { "colSpan": 12 },
"config": { "label": "Title" },
"modeConfig": {},
"requiredPolicy": "required",
"locked": false,
"removable": false,
"singleInstance": true,
"supportedModes": ["CREATE", "EDIT"],
"children": []
}
],
"stagedFieldDefinitions": [],
"scriptBindings": [],
"metadata": null
}Odpowiedź zawiera zapisaną wersję roboczą i wynik walidacji:
{
"data": {
"draftVersion": {
"id": "version_ticket_draft_1",
"status": "DRAFT"
},
"validation": {
"state": "valid",
"errors": [],
"warnings": []
}
}
}Jeśli walidacja jest niepoprawna, popraw zgłoszone błędy i zapisz ponownie. Publikacja nie powiedzie się, dopóki wersja robocza nie będzie poprawna.
Publikacja Wersji Roboczej
Publikacja udostępnia wersję roboczą w czasie działania.
POST /v1/view-layouts/layout_ticket_intake/publish
Authorization: Bearer ek_...
Content-Type: application/json
{
"clientMutationId": "ticket-layout-publish-001",
"draftVersionId": "version_ticket_draft_1"
}Po publikacji pobierz formularz ponownie:
GET /v1/custom-modules/crm/objects/ticket/forms/form_ticket_intake
Authorization: Bearer ek_...Opublikowane tryby powinny pojawić się w usableTypes, a layoutAvailability powinno zwracać PUBLISHED dla tych trybów.
Publikacja może też zawierać kontrolę optymistyczną, na przykład expectedPublishedVersionId, oraz potwierdzenia zmian pól przez confirmFieldChanges. Używaj tych pól, gdy edytor musi chronić przed nadpisaniem nowszej opublikowanej wersji albo gdy przygotowane zmiany pól wymagają jawnego potwierdzenia.
Publiczne Formularze Tworzenia
Publiczne formularze używają przypiętej opublikowanej wersji układu. Jeśli formularz jest publiczny i obsługuje CREATE, opublikuj z advancePublicPinnedVersion, gdy nowa wersja ma stać się publiczna:
{
"clientMutationId": "ticket-layout-public-publish-001",
"draftVersionId": "version_ticket_draft_1",
"advancePublicPinnedVersion": true
}Używaj tego tylko wtedy, gdy nowy opublikowany układ ma zastąpić wersję aktualnie używaną przez publiczne zgłoszenia.
Aktualizacja Metadanych Układu
Dla układów powiązanych z formularzem formularz zarządza:
- powierzchnią;
- celem;
- obsługiwanymi trybami.
Nie aktualizuj tych pól przez PATCH /v1/view-layouts/:layoutId. Użyj endpointu aktualizacji formularza, gdy chcesz zmienić typy formularza.
Możesz aktualizować bezpieczne metadane, takie jak nazwa układu, jeśli pasuje to do Twojego przepływu pracy.
Wersje
Listuj wersje, gdy musisz sprawdzić poprzednie opublikowane układy:
GET /v1/view-layouts/layout_ticket_intake/versions
Authorization: Bearer ek_...Przywróć wersję jako wersję roboczą:
POST /v1/view-layouts/layout_ticket_intake/versions/version_ticket_draft_1/restore-draft
Authorization: Bearer ek_...
Content-Type: application/json
{
"clientMutationId": "ticket-layout-restore-001"
}Przywrócenie tworzy wersję roboczą. Opublikuj ją ponownie, gdy ma wejść w życie.
Rozwiązywanie Problemów
Formularz Nadal Pokazuje DRAFT_ONLY
Wersja robocza nie została opublikowana. Opublikuj układ i pobierz formularz ponownie.
Publikacja Zwraca Błędy Walidacji
Układ nie zawiera wymaganych pól albo zawiera bloki nieobsługiwane dla powierzchni, trybu lub reguł bezpieczeństwa publicznego. Użyj odpowiedzi walidacji, aby poprawić wersję roboczą.
Utworzenie Układu Z target.formId Kończy Się Błędem
To oczekiwane zachowanie. Układy formularzy są tworzone automatycznie razem z formularzem. Użyj viewLayoutId z odpowiedzi formularza.
Tryby Układu Są Niepoprawne
Zaktualizuj types formularza. Opero synchronizuje tryby powiązanego układu z formularza.