İçeriğe geç

Formlar ve Field API

Field API

Node türlerinin alanları cp_field_definitions ile tanımlanır; FieldableFormBuilder bir Symfony formuna fields alt formunu ekler. Doğrulama, depolama ve sorgu indeksi alan tipine göre otomatiktir.

$this->fieldForms->add($builder, 'portal_news', 'tr');

Şablonda alanları tek tek çizmek için:

{% for child in form.fields|filter(child => child.vars.name not in ['image']) %}{{ form_row(child) }}{% endfor %}

Görsel ve dosya alanları

image / file alanları medya kütüphanesindeki bir varlık kimliğini (asset id) saklar. Form tarafında field-media betiği önizleme, "Medyadan seç" ve "Kaldır" düğmelerini çizer; şablonunuzun importmap listesine ekleyin:

{{ importmap(['app', 'media-picker', 'field-media']) }}

media-picker önce, field-media sonra gelmelidir. Medya modülü yoksa alan düz bir kimlik kutusu olarak kalır.

Çoklu değerli alanlar

cardinality değeri -1 (sınırsız) veya 1'den büyük olan alanlar CollectionType olur; aynı betik "+ Ekle" ve "×" düğmelerini ekler.

Medya seçici

window.CPaliusMediaPicker.open(callback, options)

// tek seçim: callback tek varlık alır
window.CPaliusMediaPicker.open((asset) => { /* asset.id, asset.url, asset.originalName */ });

// çoklu seçim: callback dizi alır
window.CPaliusMediaPicker.open((assets) => assets.forEach(add), { multiple: true });

Mevcut bir varlığın önizlemesi için: GET /admin/media/api/assets/{id}/meta → {id, url, name, mime}.

Kendi formunuz

Basit kayıt ekranları için ResourceFormBuilder yeterlidir ama alanlara sınıf ve açıklama veremez; zengin formlar için modülünüzde kendi form fabrikanızı yazın (alanlar form-control sınıfı alır). Yazı alanları için data-cpeditor CKEditor'ü, belge/Markdown için ilgili modülün editörünü kullanın.

Son güncelleme: 13.10.2026