Nette Documentation Preview

syntax
Form Kontrolleri
****************

.[perex]
Yerleşik form kontrollerine genel bakış.


addText(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method]
========================================================================================

Tek satırlık metin alanı ekler ( [TextInput |api:Nette\Forms\Controls\TextInput] sınıfı). Kullanıcı alanı doldurmazsa, boş bir dize döndürür `''` veya `null` döndürmek üzere değiştirmek için `setNullable()` kullanın.

```php
$form->addText('name', 'Name:')
	->setRequired()
	->setNullable();
```

UTF-8'i otomatik olarak doğrular, sol ve sağ boşlukları keser ve bir saldırgan tarafından gönderilebilecek satır sonlarını kaldırır.

Maksimum uzunluk `setMaxLength()` kullanılarak sınırlandırılabilir. [addFilter() |validation#Modifying Input Values] kullanıcı tarafından girilen değeri değiştirmenize olanak tanır.

Bir metin alanının görsel karakterini, [spesifikasyonda |https://developer.mozilla.org/en-US/docs/Learn/Forms/HTML5_input_types] görüldüğü gibi `setHtmlType()` kullanarak `search`, `tel` veya `url` gibi türlere değiştirebilirsiniz. Türü değiştirmenin yalnızca görsel olduğunu ve doğrulama işlevlerini yerine getirmediğini unutmayın. `url` türü için belirli bir [URL kuralı |validation#Text inputs] eklemek uygundur.

.[note]
 `number`, `range`, `email`, `date`, `datetime-local`, `time` ve `color` gibi diğer girdi türleri için sunucu tarafı doğrulama sağlayan [addInteger |#addInteger], [addFloat |#addFloat], [addEmail |#addEmail] [addDate |#addDate], [addTime |#addTime], [addDateTime |#addDateTime] ve [addColor |#addColor] gibi özel yöntemleri kullanın. `month` ve `week` türleri henüz tüm tarayıcılarda tam olarak desteklenmemektedir.

Varsayılan değer gibi bir şey olan boş değer öğe için ayarlanabilir, ancak kullanıcı bunun üzerine yazmazsa boş dize veya `null` döndürür.

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


addTextArea(string|int $name, $label=null): TextArea .[method]
==============================================================

Çok satırlı bir metin alanı ekler ( [TextArea |api:Nette\Forms\Controls\TextArea] sınıfı). Kullanıcı alanı doldurmazsa, boş bir dize döndürür `''` veya `null` döndürmek üzere değiştirmek için `setNullable()` kullanın.

```php
$form->addTextArea('note', 'Note:')
	->addRule($form::MaxLength, 'Your note is way too long', 10000);
```

UTF-8'i otomatik olarak doğrular ve satır sonlarını `\n` olarak normalleştirir. Tek satırlı bir giriş alanının aksine, boşlukları kırpmaz.

Maksimum uzunluk `setMaxLength()` kullanılarak sınırlandırılabilir. [addFilter() |validation#Modifying Input Values] kullanıcı tarafından girilen değeri değiştirmenize olanak tanır. Boş değer olarak adlandırılan değeri `setEmptyValue()` adresini kullanarak ayarlayabilirsiniz.


addInteger(string|int $name, $label=null): TextInput .[method]
==============================================================

Tamsayı için giriş alanı ekler ( [TextInput |api:Nette\Forms\Controls\TextInput] sınıfı). Kullanıcı hiçbir şey girmezse bir tamsayı veya `null` döndürür.

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

Öğe şu şekilde oluşturulur `<input type="numeric">`. `setHtmlType()` yöntemini kullanarak, kaydırıcı olarak görüntülemek için türü `range` olarak veya `numeric` özel davranışı olmadan standart bir metin alanı tercih ediyorsanız `text` olarak değiştirebilirsiniz.


addFloat(string|int $name, $label=null): TextInput .[method]{data-version:3.1.12}
=================================================================================

Adds a field for entering a decimal number ([TextInput |api:Nette\Forms\Controls\TextInput] class). Returns either float or `null`, if the user does not specify anything.

```php
$form->addFloat('level', 'Level:')
	->setDefaultValue(0)
->addRule($form::Range, 'The level must be in the range %d to %d.', [0, 100 |0, 100]);
```

Öğe şu şekilde oluşturulur `<input type="numeric">`. `setHtmlType()` yöntemini kullanarak, kaydırıcı olarak görüntülemek için türü `range` olarak veya `numeric` özel davranışı olmadan standart bir metin alanı tercih ediyorsanız `text` olarak değiştirebilirsiniz.

Nette ve Chrome tarayıcısı ondalık ayırıcı olarak hem virgül hem de nokta kabul eder. Bu işlevi Firefox'ta kullanılabilir hale getirmek için, örneğin belirli bir öğe veya tüm sayfa için `lang` özniteliğinin ayarlanması önerilir, `<html lang="cs">`.


addEmail(string|int $name, $label=null, int $maxLength=255): TextInput .[method]
================================================================================

Geçerlilik kontrolü ile e-posta adresi alanı ekler (class [TextInput |api:Nette\Forms\Controls\TextInput]). Kullanıcı alanı doldurmazsa, boş bir dize döndürür `''` veya `null` döndürmek üzere değiştirmek için `setNullable()` kullanın.

```php
$form->addEmail('email', 'Email:');
```

Değerin geçerli bir e-posta adresi olduğunu doğrular. Etki alanının gerçekten var olduğunu doğrulamaz, yalnızca sözdizimi doğrulanır. UTF-8'i otomatik olarak doğrular, sol ve sağ boşlukları kırpar.

Maksimum uzunluk `setMaxLength()` kullanılarak sınırlandırılabilir. [addFilter() |validation#Modifying Input Values] kullanıcı tarafından girilen değeri değiştirmenize olanak tanır. Boş değer olarak adlandırılan değeri `setEmptyValue()` adresini kullanarak ayarlayabilirsiniz.


addPassword(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method]
============================================================================================

Parola alanı ekler ( [TextInput |api:Nette\Forms\Controls\TextInput] sınıfı).

```php
$form->addPassword('password', 'Password:')
	->setRequired()
	->addRule($form::MinLength, 'Password has to be at least %d characters long', 8)
	->addRule($form::Pattern, 'Password must contain a number', '.*[0-9].*');
```

Formu yeniden gönderdiğinizde, girdi boş olacaktır. UTF-8'i otomatik olarak doğrular, sol ve sağ boşlukları keser ve bir saldırgan tarafından gönderilebilecek satır sonlarını kaldırır.


addCheckbox(string|int $name, $caption=null): Checkbox .[method]
================================================================

Bir onay kutusu ekler ( [Checkbox |api:Nette\Forms\Controls\Checkbox] sınıfı). Alan, işaretli olup olmamasına bağlı olarak `true` veya `false` döndürür.

```php
$form->addCheckbox('agree', 'I agree with terms')
	->setRequired('You must agree with our terms');
```


addCheckboxList(string|int $name, $label=null, ?array $items=null): CheckboxList .[method]
==========================================================================================

Birden fazla öğe seçmek için onay kutuları listesi ekler (sınıf [CheckboxList |api:Nette\Forms\Controls\CheckboxList]). Seçilen öğelerin anahtar dizisini döndürür. `getSelectedItems()` yöntemi anahtarlar yerine değerler döndürür.

```php
$form->addCheckboxList('colors', 'Colors:', [
	'r' => 'red',
	'g' => 'green',
	'b' => 'blue',
]);
```

Öğe dizisini üçüncü parametre olarak veya `setItems()` yöntemiyle iletiriz.

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

Öğe, sahtecilik yapılmadığını ve seçilen öğelerin gerçekten sunulanlardan biri olduğunu ve devre dışı bırakılmadığını otomatik olarak kontrol eder. Bu önemli kontrol olmadan sunulan öğeleri almak için `getRawValue()` yöntemi kullanılabilir.

Varsayılan değerler ayarlandığında, bunların sunulan öğelerden biri olup olmadığını da kontrol eder, aksi takdirde bir istisna atar. Bu kontrol `checkDefaultValue(false)` ile kapatılabilir.

Bir formu `GET` yöntemini kullanarak gönderiyorsanız, sorgu dizesinin boyutundan tasarruf sağlayan daha kompakt bir veri aktarım yöntemi seçebilirsiniz. Bu, formun HTML özniteliğinin ayarlanmasıyla etkinleştirilir:

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


addRadioList(string|int $name, $label=null, ?array $items=null): RadioList .[method]
====================================================================================

[Radyo |api:Nette\Forms\Controls\RadioList] düğmeleri ekler ( [RadioList |api:Nette\Forms\Controls\RadioList] sınıfı). Seçilen öğenin anahtarını veya kullanıcı herhangi bir şey seçmediyse `null` adresini döndürür. `getSelectedItem()` yöntemi, anahtar yerine bir değer döndürür.

```php
$sex = [
	'm' => 'male',
	'f' => 'female',
];
$form->addRadioList('gender', 'Gender:', $sex);
```

Öğe dizisini üçüncü parametre olarak veya `setItems()` yöntemiyle iletiriz.

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

Öğe, sahtecilik yapılmadığını ve seçilen öğenin gerçekten sunulanlardan biri olduğunu ve devre dışı bırakılmadığını otomatik olarak kontrol eder. Bu önemli kontrol yapılmadan sunulan öğeyi almak için `getRawValue()` yöntemi kullanılabilir.

Varsayılan değer ayarlandığında, bunun sunulan öğelerden biri olup olmadığını da kontrol eder, aksi takdirde bir istisna atar. Bu kontrol `checkDefaultValue(false)` ile kapatılabilir.


addSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): SelectBox .[method]
==================================================================================================

Seçme kutusu ekler ( [SelectBox |api:Nette\Forms\Controls\SelectBox] sınıfı). Seçilen öğenin anahtarını veya kullanıcı herhangi bir şey seçmediyse `null` adresini döndürür. `getSelectedItem()` yöntemi, anahtar yerine bir değer döndürür.

```php
$countries = [
	'CZ' => 'Czech republic',
	'SK' => 'Slovakia',
	'GB' => 'United Kingdom',
];

$form->addSelect('country', 'Country:', $countries)
	->setDefaultValue('SK');
```

Öğe dizisini üçüncü parametre olarak veya `setItems()` yöntemiyle aktarırız. Öğe dizisi iki boyutlu da olabilir:

```php
$countries = [
	'Europe' => [
		'CZ' => 'Czech republic',
		'SK' => 'Slovakia',
		'GB' => 'United Kingdom',
	],
	'CA' => 'Canada',
	'US' => 'USA',
	'?'  => 'other',
];
```

Seçim kutuları için, ilk öğenin genellikle özel bir anlamı vardır, eylem çağrısı görevi görür. Böyle bir girdi eklemek için `setPrompt()` yöntemini kullanın.

```php
$form->addSelect('country', 'Country:', $countries)
	->setPrompt('Pick a country');
```

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

Öğe, sahtecilik yapılmadığını ve seçilen öğenin gerçekten sunulanlardan biri olduğunu ve devre dışı bırakılmadığını otomatik olarak kontrol eder. Bu önemli kontrol yapılmadan sunulan öğeyi almak için `getRawValue()` yöntemi kullanılabilir.

Varsayılan değer ayarlandığında, bunun sunulan öğelerden biri olup olmadığını da kontrol eder, aksi takdirde bir istisna atar. Bu kontrol `checkDefaultValue(false)` ile kapatılabilir.


addMultiSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): MultiSelectBox .[method]
============================================================================================================

Çok seçenekli seçim kutusu ekler ( [MultiSelectBox |api:Nette\Forms\Controls\MultiSelectBox] sınıfı). Seçilen öğelerin anahtar dizisini döndürür. `getSelectedItems()` yöntemi anahtarlar yerine değerler döndürür.

```php
$form->addMultiSelect('countries', 'Countries:', $countries);
```

Öğe dizisini üçüncü parametre olarak veya `setItems()` yöntemiyle aktarırız. Öğe dizisi iki boyutlu da olabilir.

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

Öğe, sahtecilik yapılmadığını ve seçilen öğelerin gerçekten sunulanlardan biri olduğunu ve devre dışı bırakılmadığını otomatik olarak kontrol eder. Bu önemli kontrol olmadan sunulan öğeleri almak için `getRawValue()` yöntemi kullanılabilir.

Varsayılan değerler ayarlandığında, bunların sunulan öğelerden biri olup olmadığını da kontrol eder, aksi takdirde bir istisna atar. Bu kontrol `checkDefaultValue(false)` ile kapatılabilir.


addUpload(string|int $name, $label=null): UploadControl .[method]
=================================================================

Dosya yükleme alanı ekler ( [UploadControl |api:Nette\Forms\Controls\UploadControl] sınıfı). Kullanıcı bir dosya yüklememiş olsa bile [FileUpload |http:request#FileUpload] nesnesini döndürür, bu `FileUpload::hasFile()` yöntemiyle öğrenilebilir.

```php
$form->addUpload('avatar', 'Avatar:')
	->addRule($form::Image, 'Avatar must be JPEG, PNG, GIF or WebP')
	->addRule($form::MaxFileSize, 'Maximum size is 1 MB', 1024 * 1024);
```

Dosya doğru şekilde yüklenmediyse, form başarıyla gönderilmemiştir ve bir hata görüntülenir. Yani `FileUpload::isOk()` yöntemini kontrol etmek gerekli değildir.

`FileUpload::getName()` yöntemi tarafından döndürülen orijinal dosya adına güvenmeyin, bir istemci uygulamanızı bozmak veya hacklemek amacıyla kötü amaçlı bir dosya adı gönderebilir.

Kurallar `MimeType` ve `Image` gerekli dosya veya görüntü türünü imzasına göre tespit eder. Tüm dosyanın bütünlüğü kontrol edilmez. Bir görüntünün bozuk olup olmadığını örneğin [yüklemeye |http:request#toImage] çalışarak öğrenebilirsiniz.


addMultiUpload(string|int $name, $label=null): UploadControl .[method]
======================================================================

Çoklu dosya yükleme alanı ekler ( [UploadControl |api:Nette\Forms\Controls\UploadControl] sınıfı). [FileUpload |http:request#FileUpload] nesnelerinden oluşan bir dizi döndürür. `FileUpload::hasFile()` yöntemi her biri için `true` döndürür.

```php
$form->addMultiUpload('files', 'Files:')
	->addRule($form::MaxLength, 'A maximum of %d files can be uploaded', 10);
```

Dosyalardan biri doğru şekilde yüklenemezse, form başarıyla gönderilmemiştir ve bir hata görüntülenir. Yani `FileUpload::isOk()` yöntemini kontrol etmek gerekli değildir.

`FileUpload::getName()` yöntemi tarafından döndürülen orijinal dosya adlarına güvenmeyin, bir istemci uygulamanızı bozmak veya hacklemek amacıyla kötü amaçlı bir dosya adı gönderebilir.

Kurallar `MimeType` ve `Image` gerekli dosya veya görüntü türünü imzasına göre tespit eder. Tüm dosyanın bütünlüğü kontrol edilmez. Bir görüntünün bozuk olup olmadığını örneğin [yüklemeye |http:request#toImage] çalışarak öğrenebilirsiniz.


addDate(string|int $name, $label=null): DateTimeControl .[method]{data-version:3.1.14}
======================================================================================

Kullanıcının yıl, ay ve günden oluşan bir tarihi kolayca girmesini sağlayan bir alan ekler ( [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl] sınıfı).

Varsayılan değer için, `DateTimeInterface` adresini uygulayan nesneleri, zaman içeren bir dizeyi veya UNIX zaman damgasını temsil eden bir sayıyı kabul eder. Aynı durum, izin verilen minimum ve maksimum tarihi tanımlayan `Min`, `Max` veya `Range` kural bağımsız değişkenleri için de geçerlidir.

```php
$form->addDate('date', 'Date:')
	->setDefaultValue(new DateTime)
	->addRule($form::Min, 'The date must be at least a month old.', new DateTime('-1 month'));
```

Varsayılan olarak, bir `DateTimeImmutable` nesnesi döndürür. `setFormat()` yöntemini kullanarak bir [metin biçimi |https://www.php.net/manual/en/datetime.format.php#refsect1-datetime.format-parameters] veya zaman damgası belirtebilirsiniz:

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


addTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14}
===============================================================================================================

Kullanıcının saat, dakika ve isteğe bağlı olarak saniyelerden oluşan zamanı kolayca girmesini sağlayan bir alan ekler ( [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl] sınıfı).

Varsayılan değer için, `DateTimeInterface` adresini uygulayan nesneleri, zaman içeren bir dizeyi veya UNIX zaman damgasını temsil eden bir sayıyı kabul eder. Bu girdilerden yalnızca zaman bilgisi kullanılır; tarih göz ardı edilir. Aynı durum, izin verilen minimum ve maksimum zamanı tanımlayan `Min`, `Max` veya `Range` kural bağımsız değişkenleri için de geçerlidir. Ayarlanan minimum değer maksimum değerden yüksekse, gece yarısını kapsayan bir zaman aralığı oluşturulur.

```php
$form->addTime('time', 'Time:', withSeconds: true)
	->addRule($form::Range, 'Time must be between %d and %d.', ['12:30', '13:30']);
```

Varsayılan olarak, bir `DateTimeImmutable` nesnesi döndürür (tarih 1 Ocak, yıl 1). `setFormat()` yöntemini kullanarak bir [metin biçimi |https://www.php.net/manual/en/datetime.format.php#refsect1-datetime.format-parameters] belirtebilirsiniz:

```php
$form->addTime('time', 'Time:')
	->setFormat('H:i');
```


addDateTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14}
===================================================================================================================

Kullanıcının yıl, ay, gün, saat, dakika ve isteğe bağlı olarak saniyeden oluşan tarih ve saati kolayca girmesini sağlayan bir alan ekler ( [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl] sınıfı).

Varsayılan değer için, `DateTimeInterface` adresini uygulayan nesneleri, zaman içeren bir dizeyi veya UNIX zaman damgasını temsil eden bir sayıyı kabul eder. Aynı durum, izin verilen minimum ve maksimum tarihi tanımlayan `Min`, `Max` veya `Range` kural bağımsız değişkenleri için de geçerlidir.

```php
$form->addDateTime('datetime', 'Date and Time:')
	->setDefaultValue(new DateTime)
	->addRule($form::Min, 'The date must be at least a month old.', new DateTime('-1 month'));
```

Varsayılan olarak, bir `DateTimeImmutable` nesnesi döndürür. `setFormat()` yöntemini kullanarak bir [metin biçimi |https://www.php.net/manual/en/datetime.format.php#refsect1-datetime.format-parameters] veya zaman damgası belirtebilirsiniz:

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


addColor(string|int $name, $label=null): ColorPicker .[method]{data-version:3.1.14}
===================================================================================

Bir renk seçim alanı ekler ( [ColorPicker |api:Nette\Forms\Controls\ColorPicker] sınıfı). Renk, `#rrggbb` biçiminde bir dizedir. Kullanıcı bir seçim yapmazsa, döndürülen varsayılan renk siyahtır `#000000`.

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


addHidden(string|int $name, ?string $default=null): HiddenField .[method]
=========================================================================

Gizli alan ekler ( [HiddenField |api:Nette\Forms\Controls\HiddenField] sınıfı).

```php
$form->addHidden('userid');
```

Boş bir dize yerine `null` döndürmek üzere değiştirmek için `setNullable()` adresini kullanın. [addFilter() |validation#Modifying Input Values], gönderilen değeri değiştirmenize olanak tanır.

Öğe gizli olsa da, değerinin bir saldırgan tarafından değiştirilebileceğini veya yanıltılabileceğini **fark etmek önemlidir**. Veri manipülasyonuyla ilişkili güvenlik risklerini önlemek için sunucu tarafında alınan tüm değerleri her zaman kapsamlı bir şekilde doğrulayın ve onaylayın.


addSubmit(string|int $name, $caption=null): SubmitButton .[method]
==================================================================

Gönder düğmesi ekler ( [SubmitButton |api:Nette\Forms\Controls\SubmitButton] sınıfı).

```php
$form->addSubmit('submit', 'Register');
```

Formda birden fazla gönder düğmesi olması mümkündür:

```php
$form->addSubmit('register', 'Register');
$form->addSubmit('cancel', 'Cancel');
```

Hangisinin tıklandığını bulmak için şunu kullanın:

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

Bir gönder düğmesine basıldığında (*İptal* veya *Önizleme* düğmeleri gibi) formu doğrulamak istemiyorsanız, [setValidationScope() |validation#Disabling Validation] ile bunu kapatabilirsiniz.


addButton(string|int $name, $caption): Button .[method]
=======================================================

Gönderme işlevi olmayan düğme ( [Button |api:Nette\Forms\Controls\Button] sınıfı) ekler. Diğer işlevleri id'ye bağlamak için kullanışlıdır, örneğin bir JavaScript eylemi.

```php
$form->addButton('raise', 'Raise salary')
	->setHtmlAttribute('onclick', 'raiseSalary()');
```


addImageButton(string|int $name, ?string $src=null, ?string $alt=null): ImageButton .[method]
=============================================================================================

Resim biçiminde gönder düğmesi ekler ( [ImageButton |api:Nette\Forms\Controls\ImageButton] sınıfı).

```php
$form->addImageButton('submit', '/path/to/image');
```

Birden fazla gönder düğmesi kullanırken, hangisinin tıklandığını şu şekilde öğrenebilirsiniz `$form['submit']->isSubmittedBy()`.


addContainer(string|int $name): Container .[method]
===================================================

Bir alt form ( [Container |api:Nette\Forms\Container] sınıfı) veya bir formla aynı şekilde ele alınabilen bir [konteyner |api:Nette\Forms\Container] ekler. Bu, `setDefaults()` veya `getValues()` gibi yöntemleri kullanabileceğiniz anlamına gelir.

```php
$sub1 = $form->addContainer('first');
$sub1->addText('name', 'Your name:');
$sub1->addEmail('email', 'Email:');

$sub2 = $form->addContainer('second');
$sub2->addText('name', 'Your name:');
$sub2->addEmail('email', 'Email:');
```

Gönderilen veriler daha sonra çok boyutlu bir yapı olarak döndürülür:

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


Ayarlara Genel Bakış .[#toc-overview-of-settings]
=================================================

Tüm öğeler için aşağıdaki yöntemleri çağırabiliriz (tam bir genel bakış için [API belgelerine |https://api.nette.org/forms/master/Nette/Forms/Controls.html] bakın):

.[table-form-methods language-php]
| `setDefaultValue($value)` | varsayılan değeri ayarlar
| `getValue()` | mevcut değeri al
| `setOmitted()` | [atlanan değerler |#omitted values]
| `setDisabled()` | [girişleridevre dışı bırakma |#disabling inputs]

Rendeleme:
.[table-form-methods language-php]
| `setCaption($caption)`| öğenin başlığını değiştir
| `setTranslator($translator)` | [çevirmeni ayarlar|rendering#translating]
| `setHtmlAttribute($name, $value)` | öğenin [HTML niteliğini ayarlar|rendering#HTML attributes]
| `setHtmlId($id)` | HTML niteliğini ayarlar `id`
| `setHtmlType($type)` | HTML özniteliğini ayarlar `type`
| `setHtmlName($name)`| HTML özniteliğini ayarlar `name`
| `setOption($key, $value)` | [render verilerini ayarlar|rendering#Options]

Doğrulama:
.[table-form-methods language-php]
| `setRequired()` | [zorunlu alan |validation]
| `addRule()` | [doğrulama kuralını ayarla|validation#Rules]
| `addCondition()`, `addConditionOn()` | [doğrulama koşulunu ayarla|validation#Conditions]
| `addError($message)`| [hata mesajı iletme |validation#processing-errors]

Aşağıdaki yöntemler `addText()`, `addPassword()`, `addTextArea()`, `addEmail()`, `addInteger()` öğeleri için çağrılabilir:

.[table-form-methods language-php]
| `setNullable()`| getValue() işlevinin boş dize yerine `null` döndürüp döndürmeyeceğini ayarlar
| `setEmptyValue($value)` | boş dize olarak kabul edilen özel değeri ayarlar
| `setMaxLength($length)`| izin verilen maksimum karakter sayısını ayarlar
| `addFilter($filter)`| [Girdi Değerlerini Değiştirme |validation#Modifying Input Values]


Atlanan Değerler .[#toc-omitted-values]
=======================================

Kullanıcı tarafından girilen değerle ilgilenmiyorsanız, `$form->getValues​()` yöntemi tarafından sağlanan veya işleyicilere aktarılan sonuçtan çıkarmak için `setOmitted()` adresini kullanabiliriz. Bu, doğrulama için çeşitli parolalar, antispam alanları vb. için uygundur.

```php
$form->addPassword('passwordVerify', 'Password again:')
	->setRequired('Fill your password again to check for typo')
	->addRule($form::Equal, 'Password mismatch', $form['password'])
	->setOmitted();
```


Girişleri Devre Dışı Bırakma .[#toc-disabling-inputs]
=====================================================

Girişler `setDisabled()` kullanılarak devre dışı bırakılabilir. Devre dışı bırakılan bir girdi kullanıcı tarafından düzenlenemez.

```php
$form->addText('username', 'User name:')
	->setDisabled();
```

Devre dışı bırakılan girişler tarayıcı tarafından sunucuya gönderilmez, bu nedenle `$form->getValues()` işlevi tarafından döndürülen verilerde bunları bulamazsınız. Ancak, `setOmitted(false)` adresini ayarlarsanız, Nette varsayılan değerlerini bu verilere dahil edecektir.

 `setDisabled()` çağrıldığında, güvenlik nedeniyle **girişin değeri silinir**. Varsayılan bir değer ayarlıyorsanız, bunu devre dışı bırakıldıktan sonra yapmanız gerekir:

```php
$form->addText('username', 'User name:')
	->setDisabled()
	->setDefaultValue($userName);
```

Devre dışı bırakılmış girdilere alternatif olarak, tarayıcı tarafından sunucuya gönderilen HTML `readonly` özniteliğine sahip alanlar kullanılabilir. Alan yalnızca okunabilir olsa da, değerinin bir saldırgan tarafından değiştirilebileceğini veya yanıltılabileceğini **fark etmek önemlidir**.


Özel Kontroller .[#toc-custom-controls]
=======================================

Çok çeşitli yerleşik form kontrollerinin yanı sıra, forma aşağıdaki gibi özel kontroller ekleyebilirsiniz:

```php
$form->addComponent(new DateInput('Date:'), 'date');
// alternatif sözdizimi: $form['date'] = new DateInput('Date:');
```

.[note]
Form, [Container | component-model:#Container] sınıfının bir torunudur ve elemanlar [Component | component-model:#Component]'in torunlarıdır.

Özel öğeler eklemek için yeni form yöntemleri tanımlamanın bir yolu vardır (örneğin `$form->addZip()`). Bunlar uzantı yöntemleri olarak adlandırılır. Dezavantajı, editörlerdeki kod ipuçlarının bunlar için çalışmayacağıdır.

```php
use Nette\Forms\Container;

// addZip(string $name, ?string $label = null) yöntemini ekler
Container::extensionMethod('addZip', function (Container $form, string $name, ?string $label = null) {
	return $form->addText($name, $label)
		->addRule($form::Pattern, 'At least 5 numbers', '[0-9]{5}');
});

// kullanım
$form->addZip('zip', 'Posta kodu:');
```


Düşük Seviyeli Alanlar .[#toc-low-level-fields]
===============================================

Forma bir öğe eklemek için `$form->addXyz()` adresini çağırmak zorunda değilsiniz. Bunun yerine form öğeleri yalnızca şablonlarda tanıtılabilir. Bu, örneğin dinamik öğeler oluşturmanız gerekiyorsa kullanışlıdır:

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

Gönderdikten sonra değerleri alabilirsiniz:

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

İlk parametrede, öğe türünü belirtirsiniz ( `type=file` için`DataFile`, `text`, `password` veya `email` gibi tek satırlı girdiler için `DataLine` ve diğerleri için `DataText` ). İkinci parametre `name` HTML özniteliğiyle eşleşir. Anahtarları korumanız gerekiyorsa, ilk parametreyi `DataKeys` ile birleştirebilirsiniz. Bu `select`, `radioList` veya `checkboxList` için kullanışlıdır.

`getHttpData()` temizlenmiş girdi döndürür. Bu durumda, form tarafından gönderilen saldırgan ne olursa olsun, her zaman geçerli UTF-8 dizeleri dizisi olacaktır. Güvenli veri almak istiyorsanız doğrudan `$_POST` veya `$_GET` ile çalışmaya bir alternatiftir.

Form Kontrolleri

Yerleşik form kontrollerine genel bakış.

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

Tek satırlık metin alanı ekler ( TextInput sınıfı). Kullanıcı alanı doldurmazsa, boş bir dize döndürür '' veya null döndürmek üzere değiştirmek için setNullable() kullanın.

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

UTF-8'i otomatik olarak doğrular, sol ve sağ boşlukları keser ve bir saldırgan tarafından gönderilebilecek satır sonlarını kaldırır.

Maksimum uzunluk setMaxLength() kullanılarak sınırlandırılabilir. addFilter() kullanıcı tarafından girilen değeri değiştirmenize olanak tanır.

Bir metin alanının görsel karakterini, spesifikasyonda görüldüğü gibi setHtmlType() kullanarak search, tel veya url gibi türlere değiştirebilirsiniz. Türü değiştirmenin yalnızca görsel olduğunu ve doğrulama işlevlerini yerine getirmediğini unutmayın. url türü için belirli bir URL kuralı eklemek uygundur.

number, range, email, date, datetime-local, time ve color gibi diğer girdi türleri için sunucu tarafı doğrulama sağlayan addInteger, addFloat, addEmail addDate, addTime, addDateTime ve addColor gibi özel yöntemleri kullanın. month ve week türleri henüz tüm tarayıcılarda tam olarak desteklenmemektedir.

Varsayılan değer gibi bir şey olan boş değer öğe için ayarlanabilir, ancak kullanıcı bunun üzerine yazmazsa boş dize veya null döndürür.

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

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

Çok satırlı bir metin alanı ekler ( TextArea sınıfı). Kullanıcı alanı doldurmazsa, boş bir dize döndürür '' veya null döndürmek üzere değiştirmek için setNullable() kullanın.

$form->addTextArea('note', 'Note:')
	->addRule($form::MaxLength, 'Your note is way too long', 10000);

UTF-8'i otomatik olarak doğrular ve satır sonlarını \n olarak normalleştirir. Tek satırlı bir giriş alanının aksine, boşlukları kırpmaz.

Maksimum uzunluk setMaxLength() kullanılarak sınırlandırılabilir. addFilter() kullanıcı tarafından girilen değeri değiştirmenize olanak tanır. Boş değer olarak adlandırılan değeri setEmptyValue() adresini kullanarak ayarlayabilirsiniz.

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

Tamsayı için giriş alanı ekler ( TextInput sınıfı). Kullanıcı hiçbir şey girmezse bir tamsayı veya null döndürür.

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

Öğe şu şekilde oluşturulur <input type="numeric">. setHtmlType() yöntemini kullanarak, kaydırıcı olarak görüntülemek için türü range olarak veya numeric özel davranışı olmadan standart bir metin alanı tercih ediyorsanız text olarak değiştirebilirsiniz.

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

Adds a field for entering a decimal number (TextInput class). Returns either float or null, if the user does not specify anything.

$form->addFloat('level', 'Level:')
	->setDefaultValue(0)
->addRule($form::Range, 'The level must be in the range %d to %d.', [0, 100 |0, 100]);

Öğe şu şekilde oluşturulur <input type="numeric">. setHtmlType() yöntemini kullanarak, kaydırıcı olarak görüntülemek için türü range olarak veya numeric özel davranışı olmadan standart bir metin alanı tercih ediyorsanız text olarak değiştirebilirsiniz.

Nette ve Chrome tarayıcısı ondalık ayırıcı olarak hem virgül hem de nokta kabul eder. Bu işlevi Firefox'ta kullanılabilir hale getirmek için, örneğin belirli bir öğe veya tüm sayfa için lang özniteliğinin ayarlanması önerilir, <html lang="cs">.

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

Geçerlilik kontrolü ile e-posta adresi alanı ekler (class TextInput). Kullanıcı alanı doldurmazsa, boş bir dize döndürür '' veya null döndürmek üzere değiştirmek için setNullable() kullanın.

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

Değerin geçerli bir e-posta adresi olduğunu doğrular. Etki alanının gerçekten var olduğunu doğrulamaz, yalnızca sözdizimi doğrulanır. UTF-8'i otomatik olarak doğrular, sol ve sağ boşlukları kırpar.

Maksimum uzunluk setMaxLength() kullanılarak sınırlandırılabilir. addFilter() kullanıcı tarafından girilen değeri değiştirmenize olanak tanır. Boş değer olarak adlandırılan değeri setEmptyValue() adresini kullanarak ayarlayabilirsiniz.

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

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

$form->addPassword('password', 'Password:')
	->setRequired()
	->addRule($form::MinLength, 'Password has to be at least %d characters long', 8)
	->addRule($form::Pattern, 'Password must contain a number', '.*[0-9].*');

Formu yeniden gönderdiğinizde, girdi boş olacaktır. UTF-8'i otomatik olarak doğrular, sol ve sağ boşlukları keser ve bir saldırgan tarafından gönderilebilecek satır sonlarını kaldırır.

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

Bir onay kutusu ekler ( Checkbox sınıfı). Alan, işaretli olup olmamasına bağlı olarak true veya false döndürür.

$form->addCheckbox('agree', 'I agree with terms')
	->setRequired('You must agree with our terms');

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

Birden fazla öğe seçmek için onay kutuları listesi ekler (sınıf CheckboxList). Seçilen öğelerin anahtar dizisini döndürür. getSelectedItems() yöntemi anahtarlar yerine değerler döndürür.

$form->addCheckboxList('colors', 'Colors:', [
	'r' => 'red',
	'g' => 'green',
	'b' => 'blue',
]);

Öğe dizisini üçüncü parametre olarak veya setItems() yöntemiyle iletiriz.

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

Öğe, sahtecilik yapılmadığını ve seçilen öğelerin gerçekten sunulanlardan biri olduğunu ve devre dışı bırakılmadığını otomatik olarak kontrol eder. Bu önemli kontrol olmadan sunulan öğeleri almak için getRawValue() yöntemi kullanılabilir.

Varsayılan değerler ayarlandığında, bunların sunulan öğelerden biri olup olmadığını da kontrol eder, aksi takdirde bir istisna atar. Bu kontrol checkDefaultValue(false) ile kapatılabilir.

Bir formu GET yöntemini kullanarak gönderiyorsanız, sorgu dizesinin boyutundan tasarruf sağlayan daha kompakt bir veri aktarım yöntemi seçebilirsiniz. Bu, formun HTML özniteliğinin ayarlanmasıyla etkinleştirilir:

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

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

Radyo düğmeleri ekler ( RadioList sınıfı). Seçilen öğenin anahtarını veya kullanıcı herhangi bir şey seçmediyse null adresini döndürür. getSelectedItem() yöntemi, anahtar yerine bir değer döndürür.

$sex = [
	'm' => 'male',
	'f' => 'female',
];
$form->addRadioList('gender', 'Gender:', $sex);

Öğe dizisini üçüncü parametre olarak veya setItems() yöntemiyle iletiriz.

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

Öğe, sahtecilik yapılmadığını ve seçilen öğenin gerçekten sunulanlardan biri olduğunu ve devre dışı bırakılmadığını otomatik olarak kontrol eder. Bu önemli kontrol yapılmadan sunulan öğeyi almak için getRawValue() yöntemi kullanılabilir.

Varsayılan değer ayarlandığında, bunun sunulan öğelerden biri olup olmadığını da kontrol eder, aksi takdirde bir istisna atar. Bu kontrol checkDefaultValue(false) ile kapatılabilir.

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

Seçme kutusu ekler ( SelectBox sınıfı). Seçilen öğenin anahtarını veya kullanıcı herhangi bir şey seçmediyse null adresini döndürür. getSelectedItem() yöntemi, anahtar yerine bir değer döndürür.

$countries = [
	'CZ' => 'Czech republic',
	'SK' => 'Slovakia',
	'GB' => 'United Kingdom',
];

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

Öğe dizisini üçüncü parametre olarak veya setItems() yöntemiyle aktarırız. Öğe dizisi iki boyutlu da olabilir:

$countries = [
	'Europe' => [
		'CZ' => 'Czech republic',
		'SK' => 'Slovakia',
		'GB' => 'United Kingdom',
	],
	'CA' => 'Canada',
	'US' => 'USA',
	'?'  => 'other',
];

Seçim kutuları için, ilk öğenin genellikle özel bir anlamı vardır, eylem çağrısı görevi görür. Böyle bir girdi eklemek için setPrompt() yöntemini kullanın.

$form->addSelect('country', 'Country:', $countries)
	->setPrompt('Pick a country');

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

Öğe, sahtecilik yapılmadığını ve seçilen öğenin gerçekten sunulanlardan biri olduğunu ve devre dışı bırakılmadığını otomatik olarak kontrol eder. Bu önemli kontrol yapılmadan sunulan öğeyi almak için getRawValue() yöntemi kullanılabilir.

Varsayılan değer ayarlandığında, bunun sunulan öğelerden biri olup olmadığını da kontrol eder, aksi takdirde bir istisna atar. Bu kontrol checkDefaultValue(false) ile kapatılabilir.

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

Çok seçenekli seçim kutusu ekler ( MultiSelectBox sınıfı). Seçilen öğelerin anahtar dizisini döndürür. getSelectedItems() yöntemi anahtarlar yerine değerler döndürür.

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

Öğe dizisini üçüncü parametre olarak veya setItems() yöntemiyle aktarırız. Öğe dizisi iki boyutlu da olabilir.

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

Öğe, sahtecilik yapılmadığını ve seçilen öğelerin gerçekten sunulanlardan biri olduğunu ve devre dışı bırakılmadığını otomatik olarak kontrol eder. Bu önemli kontrol olmadan sunulan öğeleri almak için getRawValue() yöntemi kullanılabilir.

Varsayılan değerler ayarlandığında, bunların sunulan öğelerden biri olup olmadığını da kontrol eder, aksi takdirde bir istisna atar. Bu kontrol checkDefaultValue(false) ile kapatılabilir.

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

Dosya yükleme alanı ekler ( UploadControl sınıfı). Kullanıcı bir dosya yüklememiş olsa bile FileUpload nesnesini döndürür, bu FileUpload::hasFile() yöntemiyle öğrenilebilir.

$form->addUpload('avatar', 'Avatar:')
	->addRule($form::Image, 'Avatar must be JPEG, PNG, GIF or WebP')
	->addRule($form::MaxFileSize, 'Maximum size is 1 MB', 1024 * 1024);

Dosya doğru şekilde yüklenmediyse, form başarıyla gönderilmemiştir ve bir hata görüntülenir. Yani FileUpload::isOk() yöntemini kontrol etmek gerekli değildir.

FileUpload::getName() yöntemi tarafından döndürülen orijinal dosya adına güvenmeyin, bir istemci uygulamanızı bozmak veya hacklemek amacıyla kötü amaçlı bir dosya adı gönderebilir.

Kurallar MimeType ve Image gerekli dosya veya görüntü türünü imzasına göre tespit eder. Tüm dosyanın bütünlüğü kontrol edilmez. Bir görüntünün bozuk olup olmadığını örneğin yüklemeye çalışarak öğrenebilirsiniz.

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

Çoklu dosya yükleme alanı ekler ( UploadControl sınıfı). FileUpload nesnelerinden oluşan bir dizi döndürür. FileUpload::hasFile() yöntemi her biri için true döndürür.

$form->addMultiUpload('files', 'Files:')
	->addRule($form::MaxLength, 'A maximum of %d files can be uploaded', 10);

Dosyalardan biri doğru şekilde yüklenemezse, form başarıyla gönderilmemiştir ve bir hata görüntülenir. Yani FileUpload::isOk() yöntemini kontrol etmek gerekli değildir.

FileUpload::getName() yöntemi tarafından döndürülen orijinal dosya adlarına güvenmeyin, bir istemci uygulamanızı bozmak veya hacklemek amacıyla kötü amaçlı bir dosya adı gönderebilir.

Kurallar MimeType ve Image gerekli dosya veya görüntü türünü imzasına göre tespit eder. Tüm dosyanın bütünlüğü kontrol edilmez. Bir görüntünün bozuk olup olmadığını örneğin yüklemeye çalışarak öğrenebilirsiniz.

addDate(string|int $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 için, DateTimeInterface adresini uygulayan nesneleri, zaman içeren bir dizeyi veya UNIX zaman damgasını temsil eden bir sayıyı kabul eder. Aynı durum, izin verilen minimum ve maksimum tarihi tanımlayan Min, Max veya Range kural bağımsız değişkenleri için de geçerlidir.

$form->addDate('date', 'Date:')
	->setDefaultValue(new DateTime)
	->addRule($form::Min, 'The date must be at least a month old.', new DateTime('-1 month'));

Varsayılan olarak, bir DateTimeImmutable nesnesi döndürür. setFormat() yöntemini kullanarak bir metin biçimi veya zaman damgası belirtebilirsiniz:

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

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

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

Varsayılan değer için, DateTimeInterface adresini uygulayan nesneleri, zaman içeren bir dizeyi veya UNIX zaman damgasını temsil eden bir sayıyı kabul eder. Bu girdilerden yalnızca zaman bilgisi kullanılır; tarih göz ardı edilir. Aynı durum, izin verilen minimum ve maksimum zamanı tanımlayan Min, Max veya Range kural bağımsız değişkenleri için de geçerlidir. Ayarlanan minimum değer maksimum değerden yüksekse, gece yarısını kapsayan bir zaman aralığı oluşturulur.

$form->addTime('time', 'Time:', withSeconds: true)
	->addRule($form::Range, 'Time must be between %d and %d.', ['12:30', '13:30']);

Varsayılan olarak, bir DateTimeImmutable nesnesi döndürür (tarih 1 Ocak, yıl 1). setFormat() yöntemini kullanarak bir metin biçimi belirtebilirsiniz:

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

addDateTime(string|int $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 tarih ve saati kolayca girmesini sağlayan bir alan ekler ( DateTimeControl sınıfı).

Varsayılan değer için, DateTimeInterface adresini uygulayan nesneleri, zaman içeren bir dizeyi veya UNIX zaman damgasını temsil eden bir sayıyı kabul eder. Aynı durum, izin verilen minimum ve maksimum tarihi tanımlayan Min, Max veya Range kural bağımsız değişkenleri için de geçerlidir.

$form->addDateTime('datetime', 'Date and Time:')
	->setDefaultValue(new DateTime)
	->addRule($form::Min, 'The date must be at least a month old.', new DateTime('-1 month'));

Varsayılan olarak, bir DateTimeImmutable nesnesi döndürür. setFormat() yöntemini kullanarak bir metin biçimi veya zaman damgası belirtebilirsiniz:

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

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

Bir renk seçim alanı ekler ( ColorPicker sınıfı). Renk, #rrggbb biçiminde bir dizedir. Kullanıcı bir seçim yapmazsa, döndürülen varsayılan renk siyahtır #000000.

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

addHidden(string|int $name, ?string $default=null): HiddenField

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

$form->addHidden('userid');

Boş bir dize yerine null döndürmek üzere değiştirmek için setNullable() adresini kullanın. addFilter(), gönderilen değeri değiştirmenize olanak tanır.

Öğe gizli olsa da, değerinin bir saldırgan tarafından değiştirilebileceğini veya yanıltılabileceğini fark etmek önemlidir. Veri manipülasyonuyla ilişkili güvenlik risklerini önlemek için sunucu tarafında alınan tüm değerleri her zaman kapsamlı bir şekilde doğrulayın ve onaylayın.

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

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

$form->addSubmit('submit', 'Register');

Formda birden fazla gönder düğmesi olması mümkündür:

$form->addSubmit('register', 'Register');
$form->addSubmit('cancel', 'Cancel');

Hangisinin tıklandığını bulmak için şunu kullanın:

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

Bir gönder düğmesine basıldığında (İptal veya Önizleme düğmeleri gibi) formu doğrulamak istemiyorsanız, setValidationScope() ile bunu kapatabilirsiniz.

addButton(string|int $name, $caption)Button

Gönderme işlevi olmayan düğme ( Button sınıfı) ekler. Diğer işlevleri id'ye bağlamak için kullanışlıdır, örneğin bir JavaScript eylemi.

$form->addButton('raise', 'Raise salary')
	->setHtmlAttribute('onclick', 'raiseSalary()');

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

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

$form->addImageButton('submit', '/path/to/image');

Birden fazla gönder düğmesi kullanırken, hangisinin tıklandığını şu şekilde öğrenebilirsiniz $form['submit']->isSubmittedBy().

addContainer(string|int $name): Container

Bir alt form ( Container sınıfı) veya bir formla aynı şekilde ele alınabilen bir konteyner ekler. Bu, setDefaults() veya getValues() gibi yöntemleri kullanabileceğiniz anlamına gelir.

$sub1 = $form->addContainer('first');
$sub1->addText('name', 'Your name:');
$sub1->addEmail('email', 'Email:');

$sub2 = $form->addContainer('second');
$sub2->addText('name', 'Your name:');
$sub2->addEmail('email', 'Email:');

Gönderilen veriler daha sonra çok boyutlu bir yapı olarak döndürülür:

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

Ayarlara Genel Bakış

Tüm öğeler için aşağıdaki yöntemleri çağırabiliriz (tam bir genel bakış için API belgelerine bakın):

setDefaultValue($value) varsayılan değeri ayarlar
getValue() mevcut değeri al
setOmitted() atlanan değerler
setDisabled() girişleridevre dışı bırakma

Rendeleme:

setCaption($caption) öğenin başlığını değiştir
setTranslator($translator) çevirmeni ayarlar
setHtmlAttribute($name, $value) öğenin HTML niteliğini ayarlar
setHtmlId($id) HTML niteliğini ayarlar id
setHtmlType($type) HTML özniteliğini ayarlar type
setHtmlName($name) HTML özniteliğini ayarlar name
setOption($key, $value) render verilerini ayarlar

Doğrulama:

setRequired() zorunlu alan
addRule() doğrulama kuralını ayarla
addCondition(), addConditionOn() doğrulama koşulunu ayarla
addError($message) hata mesajı iletme

Aşağıdaki yöntemler addText(), addPassword(), addTextArea(), addEmail(), addInteger() öğeleri için çağrılabilir:

setNullable() getValue() işlevinin boş dize yerine null döndürüp döndürmeyeceğini ayarlar
setEmptyValue($value) boş dize olarak kabul edilen özel değeri ayarlar
setMaxLength($length) izin verilen maksimum karakter sayısını ayarlar
addFilter($filter) Girdi Değerlerini Değiştirme

Atlanan Değerler

Kullanıcı tarafından girilen değerle ilgilenmiyorsanız, $form->getValues​() yöntemi tarafından sağlanan veya işleyicilere aktarılan sonuçtan çıkarmak için setOmitted() adresini kullanabiliriz. Bu, doğrulama için çeşitli parolalar, antispam alanları vb. için uygundur.

$form->addPassword('passwordVerify', 'Password again:')
	->setRequired('Fill your password again to check for typo')
	->addRule($form::Equal, 'Password mismatch', $form['password'])
	->setOmitted();

Girişleri Devre Dışı Bırakma

Girişler setDisabled() kullanılarak devre dışı bırakılabilir. Devre dışı bırakılan bir girdi kullanıcı tarafından düzenlenemez.

$form->addText('username', 'User name:')
	->setDisabled();

Devre dışı bırakılan girişler tarayıcı tarafından sunucuya gönderilmez, bu nedenle $form->getValues() işlevi tarafından döndürülen verilerde bunları bulamazsınız. Ancak, setOmitted(false) adresini ayarlarsanız, Nette varsayılan değerlerini bu verilere dahil edecektir.

setDisabled() çağrıldığında, güvenlik nedeniyle girişin değeri silinir. Varsayılan bir değer ayarlıyorsanız, bunu devre dışı bırakıldıktan sonra yapmanız gerekir:

$form->addText('username', 'User name:')
	->setDisabled()
	->setDefaultValue($userName);

Devre dışı bırakılmış girdilere alternatif olarak, tarayıcı tarafından sunucuya gönderilen HTML readonly özniteliğine sahip alanlar kullanılabilir. Alan yalnızca okunabilir olsa da, değerinin bir saldırgan tarafından değiştirilebileceğini veya yanıltılabileceğini fark etmek önemlidir.

Özel Kontroller

Çok çeşitli yerleşik form kontrollerinin yanı sıra, forma aşağıdaki gibi özel kontroller ekleyebilirsiniz:

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

Form, Container sınıfının bir torunudur ve elemanlar Component'in torunlarıdır.

Özel öğeler eklemek için yeni form yöntemleri tanımlamanın bir yolu vardır (örneğin $form->addZip()). Bunlar uzantı yöntemleri olarak adlandırılır. Dezavantajı, editörlerdeki kod ipuçlarının bunlar için çalışmayacağıdır.

use Nette\Forms\Container;

// addZip(string $name, ?string $label = null) yöntemini ekler
Container::extensionMethod('addZip', function (Container $form, string $name, ?string $label = null) {
	return $form->addText($name, $label)
		->addRule($form::Pattern, 'At least 5 numbers', '[0-9]{5}');
});

// kullanım
$form->addZip('zip', 'Posta kodu:');

Düşük Seviyeli Alanlar

Forma bir öğe eklemek için $form->addXyz() adresini çağırmak zorunda değilsiniz. Bunun yerine form öğeleri yalnızca şablonlarda tanıtılabilir. Bu, örneğin dinamik öğeler oluşturmanız gerekiyorsa kullanışlıdır:

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

Gönderdikten sonra değerleri alabilirsiniz:

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

İlk parametrede, öğe türünü belirtirsiniz ( type=file içinDataFile, text, password veya email gibi tek satırlı girdiler için DataLine ve diğerleri için DataText ). İkinci parametre name HTML özniteliğiyle eşleşir. Anahtarları korumanız gerekiyorsa, ilk parametreyi DataKeys ile birleştirebilirsiniz. Bu select, radioList veya checkboxList için kullanışlıdır.

getHttpData() temizlenmiş girdi döndürür. Bu durumda, form tarafından gönderilen saldırgan ne olursa olsun, her zaman geçerli UTF-8 dizeleri dizisi olacaktır. Güvenli veri almak istiyorsanız doğrudan $_POST veya $_GET ile çalışmaya bir alternatiftir.