Form Öğeleri

Standart form öğelerine genel bakış.

addText (string $name, $label=null, ?int $cols=null, ?int $maxLength=null): TextInput

Tek satırlık bir metin girdi alanı ekler (TextInput sınıfı). Kullanıcı alanı doldurmazsa boş dize '' döndürür; bunun yerine null döndürmesi için setNullable() kullanın.

$form->addText('name', 'Ad:')
	->setRequired()
	->setNullable();

UTF-8 kodlamasını otomatik doğrular, baştaki ve sondaki boşlukları kırpar ve bir saldırganın gönderebileceği satır sonlarını kaldırır.

En fazla uzunluk setMaxLength() ile sınırlanabilir. addFilter() metodu, kullanıcının girdiği değeri değiştirmeye olanak tanır.

setHtmlType() ile metin alanının görsel görünümünü, belirtimde tanımlandığı gibi search, tel ya da url gibi türlere çevirebilirsiniz. Türü değiştirmenin salt görsel olduğunu ve doğrulama işlevinin yerini almadığını unutmayın. url türünde, belirli bir URL doğrulama kuralı eklemek yerinde olur.

number, range, email, date, datetime-local, time ve color gibi diğer girdi türlerinde, sunucu tarafı doğrulama sağlayan addInteger(), addFloat(), addEmail(), addDate(), addTime(), addDateTime() ve addColor() gibi özelleşmiş metotları kullanın. month ve week türleri henüz tüm tarayıcılarda tam desteklenmiyor.

Öğe için bir “boş değer” ayarlanabilir. Bu, bir bakıma varsayılan değer gibi davranır, ama kullanıcı onu değiştirmezse öğe boş dize ya da null döndürür.

$form->addText('phone', 'Telefon:')
	->setHtmlType('tel')
	->setEmptyValue('+420');

addTextArea (string $name, $label=null): TextArea

Çok satırlı bir metin girdi alanı ekler (TextArea sınıfı). Kullanıcı alanı doldurmazsa boş dize '' döndürür; bunun yerine null döndürmesi için setNullable() kullanın.

$form->addTextArea('note', 'Not:')
	->addRule($form::MaxLength, 'Notunuz fazlasıyla uzun', 10000);

UTF-8 kodlamasını otomatik doğrular ve satır sonlarını \n biçimine normalleştirir. Tek satırlık girdi alanının aksine boşluk kırpması yapılmaz.

En fazla uzunluk setMaxLength() ile sınırlanabilir. addFilter() metodu, kullanıcının girdiği değeri değiştirmeye olanak tanır. Boş değer setEmptyValue() ile ayarlanabilir.

addInteger (string $name, $label=null): TextInput

Tam sayı girmeye yarayan bir girdi alanı ekler (TextInput sınıfı). Ya bir tam sayı ya da kullanıcı bir şey girmezse null döndürür.

$form->addInteger('year', 'Yıl:')
	->addRule($form::Range, 'Yıl %d ile %d arasında olmalıdır.', [1900, 2023]);

Öğe <input type="number"> olarak render edilir. setHtmlType() metoduyla türü, kaydırıcı olarak görüntülemek için range ya da number türünün özel davranışı olmadan standart bir metin alanı yeğliyorsanız text yapabilirsiniz.

addFloat (string $name, $label=null): TextInput

Kayan noktalı sayı girmeye yarayan bir girdi alanı ekler (TextInput sınıfı). Ya bir float ya da kullanıcı bir şey girmezse null döndürür.

$form->addFloat('level', 'Seviye:')
	->setDefaultValue(0)
	->addRule($form::Range, 'Seviye %d ile %d arasında olmalıdır.', [0, 100]);

Öğe <input type="number"> olarak render edilir. setHtmlType() metoduyla türü, kaydırıcı olarak görüntülemek için range ya da number türünün özel davranışı olmadan standart bir metin alanı yeğliyorsanız text yapabilirsiniz.

Nette ve Chrome tarayıcısı, ondalık ayırıcı olarak hem virgülü hem noktayı kabul eder. Bu işlevi Firefox'ta da açmak için, lang niteliğini ilgili öğede ya da sayfanın tamamında ayarlamak önerilir, örneğin <html lang="en">.

addEmail (string $name, $label=null, int $maxLength=255): TextInput

E-posta adresi girmeye yarayan bir girdi alanı ekler (TextInput sınıfı). Kullanıcı alanı doldurmazsa boş dize '' döndürür; bunun yerine null döndürmesi için setNullable() kullanın.

$form->addEmail('email', 'E-posta:');

Değerin geçerli bir e-posta adresi olduğunu doğrular. Alan adının gerçekten var olup olmadığını denetlemez, yalnızca söz dizimini doğrular. UTF-8 kodlamasını otomatik doğrular ve baştaki ile sondaki boşlukları kırpar.

En fazla uzunluk setMaxLength() ile sınırlanabilir. addFilter() metodu, kullanıcının girdiği değeri değiştirmeye olanak tanır. Boş değer setEmptyValue() ile ayarlanabilir.

addPassword (string $name, $label=null, ?int $cols=null, ?int $maxLength=null): TextInput

Parola girdi alanı ekler (TextInput sınıfı).

$form->addPassword('password', 'Parola:')
	->setRequired()
	->addRule($form::MinLength, 'Parola en az %d karakter uzunluğunda olmalıdır', 8)
	->addRule($form::Pattern, 'Parola bir rakam içermelidir', '.*[0-9].*');

Form yeniden görüntülendiğinde alan boş olur. UTF-8 kodlamasını otomatik doğrular, baştaki ve sondaki boşlukları kırpar ve bir saldırganın gönderebileceği satır sonlarını kaldırır.

addCheckbox (string $name, $caption=null): Checkbox

Bir onay kutusu ekler (Checkbox sınıfı). İşaretli olup olmamasına göre true ya da false döndürür.

$form->addCheckbox('agree', 'Koşulları kabul ediyorum')
	->setRequired('Koşullarımızı kabul etmelisiniz');

addCheckboxList (string $name, $label=null, ?array $items=null): CheckboxList

Birden çok öğe seçmek için onay kutusu listesi ekler (CheckboxList sınıfı). Seçilen öğelerin anahtarlarından oluşan bir dizi döndürür. getSelectedItems() metodu, seçilen öğeleri anahtar-değer çiftleri olarak döndürür.

$form->addCheckboxList('colors', 'Renkler:', [
	'r' => 'kırmızı',
	'g' => 'yeşil',
	'b' => 'mavi',
]);

Sunulan öğe dizisini üçüncü parametre olarak ya da setItems() metoduyla verin. setItems() metoduna ikinci argüman olarak false verirseniz, değerler aynı zamanda anahtar olarak kullanılır.

Tek tek öğeleri devre dışı bırakmak için setDisabled(['r', 'g']) kullanın.

Öğe, hiçbir sahtecilik yapılmadığını ve seçilen öğelerin gerçekten sunulanlar arasında bulunduğunu ve devre dışı bırakılmadığını otomatik denetler. Gönderilen öğeleri bu önemli denetim olmadan almak için getRawValue() metodu kullanılabilir.

Varsayılan seçili öğeler ayarlanırken de bunların sunulanlar arasında olup olmadığı denetlenir, aksi hâlde istisna fırlatılır. Bu denetim checkDefaultValue(false) ile kapatılabilir.

Formu GET metoduyla gönderiyorsanız, query string boyutundan tasarruf eden daha derli toplu bir veri aktarım yöntemi seçebilirsiniz. Onu, formda bir HTML niteliği ayarlayarak etkinleştirin:

$form->setHtmlAttribute('data-nette-compact');

addRadioList (string $name, $label=null, ?array $items=null): RadioList

Radyo düğmeleri ekler (RadioList sınıfı). Seçilen öğenin anahtarını, kullanıcı hiçbir şey seçmediyse null döndürür. getSelectedItem() metodu anahtar yerine değeri döndürür.

$sex = [
	'm' => 'erkek',
	'f' => 'kadın',
	'o' => 'diğer',
];
$form->addRadioList('gender', 'Cinsiyet:', $sex);

Sunulan öğe dizisini üçüncü parametre olarak ya da setItems() metoduyla verin.

Tek tek öğeleri devre dışı bırakmak için setDisabled(['m']) kullanın.

Öğe, hiçbir sahtecilik yapılmadığını ve seçilen öğenin gerçekten sunulanlardan biri olduğunu ve devre dışı bırakılmadığını otomatik denetler. Gönderilen öğeyi bu önemli denetim olmadan almak için getRawValue() metodu kullanılabilir.

Varsayılan seçili öğe ayarlanırken de bunun sunulanlardan biri olup olmadığı denetlenir, aksi hâlde istisna fırlatılır. Bu denetim checkDefaultValue(false) ile kapatılabilir.

addSelect (string $name, $label=null, ?array $items=null, ?int $size=null): SelectBox

Bir seçim kutusu ekler (SelectBox sınıfı). Seçilen öğenin anahtarını, kullanıcı hiçbir şey seçmediyse null döndürür. getSelectedItem() metodu anahtar yerine değeri döndürür.

$countries = [
	'CZ' => 'Çek Cumhuriyeti',
	'SK' => 'Slovakya',
	'GB' => 'Birleşik Krallık',
];

$form->addSelect('country', 'Ülke:', $countries)
	->setDefaultValue('SK');

Sunulan öğe dizisini üçüncü parametre olarak ya da setItems() metoduyla verin. Öğeler iki boyutlu bir dizi de olabilir (optgroup'ları temsil eder):

$countries = [
	'Avrupa' => [
		'CZ' => 'Çek Cumhuriyeti',
		'SK' => 'Slovakya',
		'GB' => 'Birleşik Krallık',
	],
	'CA' => 'Kanada',
	'US' => 'ABD',
	'?'  => 'diğer',
];

Seçim kutularında ilk öğenin çoğu zaman özel bir anlamı vardır ve eyleme çağrı görevi görür. Böyle bir öğe eklemek için setPrompt() metodunu kullanın.

$form->addSelect('country', 'Ülke:', $countries)
	->setPrompt('Bir ülke seçin');

Tek tek öğeleri devre dışı bırakmak için setDisabled(['CZ', 'SK']) kullanın.

Öğe, hiçbir sahtecilik yapılmadığını ve seçilen öğenin gerçekten sunulanlardan biri olduğunu ve devre dışı bırakılmadığını otomatik denetler. Gönderilen öğeyi bu önemli denetim olmadan almak için getRawValue() metodu kullanılabilir.

Varsayılan seçili öğe ayarlanırken de bunun sunulanlardan biri olup olmadığı denetlenir, aksi hâlde istisna fırlatılır. Bu denetim checkDefaultValue(false) ile kapatılabilir.

addMultiSelect (string $name, $label=null, ?array $items=null, ?int $size=null): MultiSelectBox

Birden çok öğe seçmek için bir seçim kutusu ekler (MultiSelectBox sınıfı). Seçilen öğelerin anahtarlarından oluşan bir dizi döndürür. getSelectedItems() metodu, seçilen öğeleri anahtar-değer çiftleri olarak döndürür.

$form->addMultiSelect('countries', 'Ülkeler:', $countries);

Sunulan öğe dizisini üçüncü parametre olarak ya da setItems() metoduyla verin. Öğeler iki boyutlu bir dizi de olabilir.

Tek tek öğeleri devre dışı bırakmak için setDisabled(['CZ', 'SK']) kullanın.

Öğe, hiçbir sahtecilik yapılmadığını ve seçilen öğelerin gerçekten sunulanlar arasında bulunduğunu ve devre dışı bırakılmadığını otomatik denetler. Gönderilen öğeleri bu önemli denetim olmadan almak için getRawValue() metodu kullanılabilir.

Varsayılan seçili öğeler ayarlanırken de bunların sunulanlar arasında olup olmadığı denetlenir, aksi hâlde istisna fırlatılır. Bu denetim checkDefaultValue(false) ile kapatılabilir.

addUpload (string $name, $label=null): UploadControl

Dosya yükleme alanı ekler (UploadControl sınıfı). Kullanıcı hiç dosya yüklemese bile bir FileUpload nesnesi döndürür; bu, FileUpload::hasFile() metoduyla denetlenebilir. setNullable() ile, hiç dosya yüklenmediğinde öğenin FileUpload nesnesi yerine null döndürmesini sağlayabilirsiniz.

$form->addUpload('avatar', 'Avatar:')
	->addRule($form::Image, 'Avatar JPEG, PNG, GIF, WebP ya da AVIF olmalıdır.')
	->addRule($form::MaxFileSize, 'En fazla boyut 1 MB.', 1024 * 1024);

Dosya doğru yüklenemezse form başarıyla gönderilmez ve bir hata görüntülenir. Yani başarılı gönderimde FileUpload::isOk() metodunu denetlemeye gerek yoktur.

FileUpload::getName() metodunun döndürdüğü özgün dosya adına asla güvenmeyin; istemci, uygulamanıza zarar verme ya da onu ele geçirme niyetiyle kötü niyetli bir dosya adı göndermiş olabilir.

MimeType ve Image kuralları, gereken türü dosyanın imzasına göre saptar ve bütünlüğünü doğrulamaz. Bir görselin bozuk olup olmadığı, örneğin onu yüklemeyi deneyerek belirlenebilir.

addMultiUpload (string $name, $label=null): UploadControl

Birden çok dosyayı tek seferde yüklemek için bir alan ekler (UploadControl sınıfı). FileUpload nesnelerinden oluşan bir dizi döndürür. Her birinde FileUpload::hasFile() metodu true döndürecektir.

$form->addMultiUpload('files', 'Dosyalar:')
	->addRule($form::MaxLength, 'En fazla %d dosya yüklenebilir.', 10);

Dosyalardan herhangi biri doğru yüklenemezse form başarıyla gönderilmez ve bir hata görüntülenir. Yani başarılı gönderimde her dosya için FileUpload::isOk() metodunu denetlemeye gerek yoktur.

FileUpload::getName() metodunun döndürdüğü özgün dosya adlarına asla güvenmeyin; istemci, uygulamanıza zarar verme ya da onu ele geçirme niyetiyle kötü niyetli dosya adları göndermiş olabilir.

MimeType ve Image kuralları, gereken türü dosyanın imzasına göre saptar ve bütünlüğünü doğrulamaz. Bir görselin bozuk olup olmadığı, örneğin onu yüklemeyi deneyerek belirlenebilir.

addDate (string $name, $label=null): DateTimeControl

Kullanıcının yıl, ay ve günden oluşan bir tarihi kolayca girmesini sağlayan bir alan ekler (DateTimeControl sınıfı).

Varsayılan değer olarak DateTimeInterface uygulayan nesneleri, zaman içeren bir dizeyi ya da UNIX zaman damgasını temsil eden bir sayıyı kabul eder. Aynısı, izin verilen en küçük ve en büyük tarihleri tanımlayan Min, Max ya da Range kurallarının argümanları için de geçerlidir.

$form->addDate('date', 'Tarih:')
	->setDefaultValue(new DateTime)
	->addRule($form::Min, 'Tarih en az bir ay öncesine ait olmalıdır.', new DateTime('-1 month'));

Varsayılan olarak bir DateTimeImmutable nesnesi döndürür. setFormat() metoduyla bir metin biçimi ya da zaman damgası belirtebilirsiniz:

$form->addDate('date', 'Tarih:')
	->setFormat('Y-m-d');

addTime (string $name, $label=null, bool $withSeconds=false): DateTimeControl

Kullanıcının saat, dakika ve isteğe bağlı olarak saniyeden oluşan bir zamanı kolayca girmesini sağlayan bir alan ekler (DateTimeControl sınıfı).

Varsayılan değer olarak DateTimeInterface uygulayan nesneleri, zaman içeren bir dizeyi ya da UNIX zaman damgasını temsil eden bir sayıyı kabul eder. Bu girdilerden yalnızca zaman bilgisi kullanılır, tarih yok sayılır. Aynısı, izin verilen en küçük ve en büyük zamanları tanımlayan Min, Max ya da Range kurallarının argümanları için de geçerlidir. Ayarlanan en küçük değer en büyükten yüksekse, gece yarısını aşan bir zaman aralığı oluşur.

$form->addTime('time', 'Zaman:', withSeconds: true)
	->addRule($form::Range, 'Zaman %d ile %d arasında olmalıdır.', ['12:30', '13:30']);

Varsayılan olarak bir DateTimeImmutable nesnesi döndürür (tarihi 1 Ocak 1 yılı olarak ayarlanmış). setFormat() metoduyla bir metin biçimi belirtebilirsiniz:

$form->addTime('time', 'Zaman:')
	->setFormat('H:i');

addDateTime (string $name, $label=null, bool $withSeconds=false): DateTimeControl

Kullanıcının yıl, ay, gün, saat, dakika ve isteğe bağlı olarak saniyeden oluşan hem tarihi hem zamanı kolayca girmesini sağlayan bir alan ekler (DateTimeControl sınıfı).

Varsayılan değer olarak DateTimeInterface uygulayan nesneleri, zaman içeren bir dizeyi ya da UNIX zaman damgasını temsil eden bir sayıyı kabul eder. Aynısı, izin verilen en küçük ve en büyük tarih ile zamanı tanımlayan Min, Max ya da Range kurallarının argümanları için de geçerlidir.

$form->addDateTime('datetime', 'Tarih ve saat:')
	->setDefaultValue(new DateTime)
	->addRule($form::Min, 'Tarih en az bir ay öncesine ait olmalıdır.', new DateTime('-1 month'));

Varsayılan olarak bir DateTimeImmutable nesnesi döndürür. setFormat() metoduyla bir metin biçimi ya da zaman damgası belirtebilirsiniz:

$form->addDateTime('datetime')
	->setFormat(DateTimeControl::FormatTimestamp);

addColor (string $name, $label=null): ColorPicker

Renk seçme alanı ekler (ColorPicker sınıfı). Renk, #rrggbb biçiminde bir dize olarak döndürülür. Kullanıcı bir seçim yapmazsa siyah #000000 döndürür.

$form->addColor('color', 'Renk:')
	->setDefaultValue('#3C8ED7');

addHidden (string $name, mixed $default=null): HiddenField

Gizli bir alan ekler (HiddenField sınıfı).

$form->addHidden('userid');

Boş dize yerine null döndürmesi için setNullable() kullanın. addFilter() metodu, gönderilen değeri değiştirmeye olanak tanır.

Öğe gizli olsa da, şunu fark etmek önemlidir: değeri yine de bir saldırgan tarafından değiştirilebilir ya da taklit edilebilir. Veri manipülasyonuyla ilgili güvenlik risklerini önlemek için alınan tüm değerleri sunucu tarafında her zaman titizlikle doğrulayın.

addSubmit (string $name, $caption=null): SubmitButton

Bir gönder düğmesi ekler (SubmitButton sınıfı).

$form->addSubmit('submit', 'Gönder');

İşleyici, onClick olayına bağlanmak yerine doğrudan düğmeye üçüncü parametre $onSubmit olarak verilebilir:

$form->addSubmit('submit', 'Gönder', function (SubmitButton $button, $data): void {
	// ...
});

Formda birden çok gönder düğmesi bulunabilir:

$form->addSubmit('register', 'Kaydol');
$form->addSubmit('cancel', 'İptal');

Hangisine tıklandığını belirlemek için şunu kullanın:

if ($form['register']->isSubmittedBy()) {
  // ...
}

Bir düğmeye basıldığında formun tamamını doğrulamak istemiyorsanız (örneğin İptal ya da Önizleme düğmelerinde), setValidationScope() kullanın.

addButton (string $name, $caption=null)Button

Gönderme işlevi olmayan bir düğme ekler (Button sınıfı). Bu yüzden başka işlevler için, örneğin tıklandığında bir JavaScript fonksiyonu çağırmak için kullanılabilir.

$form->addButton('raise', 'Maaşı artır')
	->setHtmlAttribute('onclick', 'raiseSalary()');

addImageButton (string $name, ?string $src=null, ?string $alt=null): ImageButton

Görsel biçiminde bir gönder düğmesi ekler (ImageButton sınıfı).

$form->addImageButton('submit', '/path/to/image.png', 'Gönder');

Birden çok gönder düğmesi kullanırken hangisine tıklandığını $form['submit']->isSubmittedBy() ile belirleyebilirsiniz.

addContainer (string|int $name): Container

Bir alt form (Container sınıfı), yani bir container ekler; içine, forma eklendiği gibi başka öğeler eklenebilir. setDefaults() ya da getValues() gibi metotlar da çalışır.

$sub1 = $form->addContainer('first');
$sub1->addText('name', 'Adınız:');
$sub1->addEmail('email', 'E-posta:');

$sub2 = $form->addContainer('second');
$sub2->addText('name', 'Adınız:');
$sub2->addEmail('email', 'E-posta:');

Gönderilen veri o zaman çok boyutlu bir yapı olarak döndürülür:

[
	'first' => [
		'name' => /* ... */,
		'email' => /* ... */,
	],
	'second' => [
		'name' => /* ... */,
		'email' => /* ... */,
	],
]

Ayarlara Genel Bakış

Tüm öğelerde şu metotları çağırabiliriz (eksiksiz bir özet için API belgelerine bakın):

setDefaultValue($value) varsayılan değeri ayarlar
getValue() geçerli değeri alır
setOmitted() Atlanan Değerler
setDisabled() Öğeleri Devre Dışı Bırakma

Render:

setCaption($caption) öğenin etiketini değiştirir
setTranslator($translator) çevirmeni ayarlar
setHtmlAttribute($name, $value) eleman için bir HTML niteliği ayarlar
setHtmlId($id) HTML id niteliğini ayarlar
setOption($key, $value) render seçeneklerini ayarlar

Doğrulama:

setRequired() öğeyi zorunlu yapar
addRule() bir doğrulama kuralı ekler
addCondition(), addConditionOn() bir doğrulama koşulu ayarlar
addError($message) bir hata mesajı ekler

addText(), addPassword(), addTextArea(), addEmail(), addInteger(), addFloat() öğelerinde şu metotlar çağrılabilir:

setNullable() getValue() metodunun boş dize yerine null döndürüp döndürmeyeceğini ayarlar
setEmptyValue($value) boş dize sayılan özel bir değer ayarlar
setMaxLength($length) izin verilen en fazla karakter sayısını ayarlar
addFilter($filter) girdiyi değiştirir

Atlanan Değerler

Kullanıcının doldurduğu değer bizi ilgilendirmiyorsa, setOmitted() ile onu $form->getValues() metodunun sonucundan ya da işleyicilere aktarılan veriden çıkarabiliriz. Bu, çeşitli parola doğrulama alanları, spam önleme öğeleri vb. için yararlıdır.

$form->addPassword('passwordVerify', 'Parola tekrar:')
	->setRequired('Yazım hatası olmadığını denetlemek için parolanızı yeniden girin')
	->addRule($form::Equal, 'Parolalar eşleşmiyor', $form['password'])
	->setOmitted();

Öğeleri Devre Dışı Bırakma

Öğeler setDisabled() ile devre dışı bırakılabilir. Devre dışı bir öğe kullanıcı tarafından düzenlenemez.

$form->addText('username', 'Kullanıcı adı:')
	->setDisabled();

Devre dışı öğeler tarayıcı tarafından sunucuya hiç gönderilmez, dolayısıyla onları $form->getValues() fonksiyonunun döndürdüğü veride bulamazsınız. Ancak setOmitted(false) ayarlarsanız, Nette varsayılan değerlerini bu veriye katar.

setDisabled() çağrıldığında, güvenlik nedeniyle öğenin değeri temizlenir. Bir varsayılan değer ayarlıyorsanız, bunu devre dışı bıraktıktan sonra yapmanız gerekir:

$form->addText('username', 'Kullanıcı adı:')
	->setDisabled()
	->setDefaultValue($userName);

Devre dışı öğelere bir alternatif, tarayıcının sunucuya gönderdiği HTML readonly niteliğine sahip öğelerdir. Öğe salt okunur olsa da, şunu fark etmek önemlidir: değeri yine de bir saldırgan tarafından değiştirilebilir ya da taklit edilebilir.

Özel Öğeler

Geniş yerleşik form öğesi yelpazesinin yanı sıra forma özel öğeler de ekleyebilirsiniz:

$form->addComponent(new DateInput('Tarih:'), 'date');
// alternatif söz dizimi: $form['date'] = new DateInput('Tarih:');

Böyle bir öğenin, gönderilen veriyi okuma, doğrulama ve render dahil, nasıl yazılacağı ayrı bir bölümde anlatılıyor. Orada ayrıca, $form->addZip() gibi kendi ekleme metodunuzu yazmanızı sağlayan genişletme metotlarını da öğreneceksiniz.

Düşük Düzeyli Alanlar

Yalnızca şablonda yazılan ve $form->addXyz() metotlarından hiçbiriyle forma eklenmeyen öğeleri de kullanmak olanaklıdır. Örneğin veritabanından kayıtları listelerken, kaç tane olacağını ya da ID'lerinin ne olacağını önceden bilmediğimizde ve her satır için bir onay kutusu veya radyo düğmesi göstermek istediğimizde, bunu şablonda basitçe kodlayabiliriz:

{foreach $items as $item}
	<p><input type=checkbox name="sel[]" value={$item->id}> {$item->name}</p>
{/foreach}

Ve gönderimden sonra değeri alırız:

$data = $form->getHttpData($form::DataText, 'sel[]');
$data = $form->getHttpData($form::DataText | $form::DataKeys, 'sel[]');

Burada ilk parametre elemanın türüdür (type=file için DataFile, text, password, email gibi tek satırlık girdiler için DataLine, diğerlerinin tümü için DataText), ikinci parametre sel[] ise HTML name niteliğine karşılık gelir. Eleman türünü, elemanların anahtarlarını koruyan DataKeys değeriyle birleştirebiliriz. Bu özellikle select, radioList ve checkboxList için yararlıdır.

Can alıcı nokta: getHttpData() temizlenmiş bir değer döndürür. Bu durumda, bir saldırganın sunucuya ne göndermeye çalıştığından bağımsız olarak, her zaman geçerli UTF-8 dizelerinden oluşan bir dizi olacaktır. Bu, doğrudan $_POST ya da $_GET ile çalışmaya benzer, ama önemli bir farkla: her zaman temiz veri döndürür; tıpkı standart Nette form öğelerinde alışık olduğunuz gibi.

versiyon: 4.x