Veri istekleri
Sayfa ve bileşen root.props üzerindeki adlı dataRequests list/get/create/update davranışını sahiplenir. Button ve InteractiveWrapper yalnızca adlı isteği tetikler. VariableInputBlock, isteklerin okuyup yazdığı değişkenleri düzenler. Liste arayüzleri satırları VariableArrayTemplateBlock ile entry[]/array değişkene bağlayarak tekrarlar.
These are legacy blocks. Do not insert, copy, or invent them — they may still appear in existing documents, but their behavior is not guaranteed long-term and they will be fully removed: ButtonLink, LinkBar, LinkWrapper, ButtonWrapper, SingleAccordion, ObjectDisplayBlock, PageComponentBlock, HeaderNavShellBlock, ObjectBreadcrumbBlock, FormInput, FormSubmitButton, FormDeleteButton. Use get_design_schema / get_docs catalogs for allowed types. For lists/details/forms use ComponentBlock + named dataRequests (create_component_preset), VariableArrayTemplateBlock for repeating list rows (arrayBinding → {{var:hits|items}}, slot tokens {{var:item.*}}), VariableInputBlock, and ButtonBlock runRequest/runMutation. ButtonLink→ButtonBlock mapping (manual only): appearance filled→filled, text→text; move icon into a {{icon:…}} chip in text; set sizeByBreakpoint widthMode fitContent for non-stretch CTAs. Consent with a link: VariableInputBlock checkbox + adjacent RichTextBlock — do not build rich checkbox labels.
Zihinsel model
Sorgular ne yapacaklarına kendileri karar verir. Bir istek op, objectTypeId, args (filters, searchQuery, fieldValues — çoğu zaman {{var:id}} veya {{bind:route.*}}), isteğe bağlı select ve başarılı çalışmadan sonra sonuçları değişkenlere kopyalayan resultWrites taşır. Button/InteractiveWrapper yalnızca action=runRequest|runMutation ve requestName ayarlar (loadingText/successText/errorText isteğe bağlı). Arama veya gönderim mantığını butona koymayın.
Konum
Yalnızca content.root.props.dataRequests, inputSchema ve variables okunur. Host sayfalar ComponentBlock.props.inputMappings ile bileşen girdilerini bağlar. Üst düzey veya yanlış yerdeki anahtarlar saklanır ama detailed/runtime tarafından yok sayılır — get_design_warnings uyarır.
Şema
dataRequests[]: { name, op: list|get|create|update, objectTypeId, args?, select?, resultWrites? }. resultWrites[]: { variableId, source? } (varsayılan source: results). inputSchema[]: { id, name, type }. Tokenlar: {{var:id}}, {{bind:route.}}, {{bind:query.}}. Liste satırları: VariableArrayTemplateBlock.arrayBinding = {{var:hits}} (veya {{var:items}}); slot içinde {{var:item.
Select seçenekleri (VariableInputBlock)
Seçenekler blok props’tan değil, değişken tanımından gelir. type: “list” ve options: [{ id, label }, …] kullanın. type: “options” kabul edilir ve list olarak işlenir. Seçeneklerde id yerine value de kullanılabilir. VariableInputBlock’ta control: “select” (veya auto).
Herkese açık oluşturma
Anonim create/update alan izinleri ve yerleşik honeypot/rate-limit kullanır. Başlangıç için create_component_preset kind=form. İstemci required nitelikleri kaldırılsa bile sunucu boş zorunlu nesne alanlarını reddeder.
Tarifler
İletişim formu: alan değişkenleri + VariableInputBlock + create dataRequest + Button runMutation.
Arama / liste: q (text) ve hits (entry[]) değişkenleri + list dataRequest (searchQuery {{var:q}} + resultWrites → hits) + VariableInputBlock + Button runRequest + VariableArrayTemplateBlock (arrayBinding {{var:hits}}, slot’ta {{var:item.
İnceleme
mode=detailed: requests, requestsDetailed, parseErrors. get_design_warnings bilinmeyen blok/action ve hatalı dataRequests satırlarını bildirir.
Hazır ayarlar ve migrasyon
MCP create_component_preset {objectTypeId, kind}. Liste preset’i {{var:hits}} bağlı VariableArrayTemplateBlock ve örnek {{var:item.*}} başlığı üretir. MCP migrate_object_displays leftover ObjectDisplayBlock düğümlerini ComponentBlock + named requests’e çevirir; liste yolu VariableArrayTemplateBlock + sayfa-güvenli bloklar üretir (ObjectBoundField değil) — eski display tiplerini eklemeyin.