Nette Documentation Preview

syntax
Nyomtatvány vezérlők
********************

.[perex]
A beépített űrlapvezérlők áttekintése.


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

Egysoros szövegmező hozzáadása ( [TextInput |api:Nette\Forms\Controls\TextInput] osztály). Ha a felhasználó nem tölti ki a mezőt, akkor egy üres karakterláncot ad vissza `''`, vagy a `setNullable()` segítségével megváltoztatja, hogy `null` adjon vissza.

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

Automatikusan érvényesíti az UTF-8 szabványt, levágja a bal és jobb oldali fehérjeleket, és eltávolítja a támadó által küldhető sortöréseket.

A maximális hossz a `setMaxLength()` segítségével korlátozható. Az [addFilter() |validation#Modifying Input Values] lehetővé teszi a felhasználó által megadott érték megváltoztatását.

A szövegmező vizuális karakterét a `search`, `tel` vagy `url` típusokra változtathatja a `setHtmlType()` segítségével, ahogyan az a [specifikációban |https://developer.mozilla.org/en-US/docs/Learn/Forms/HTML5_input_types] látható. Ne feledje, hogy a típus megváltoztatása csak vizuális, és nem végez érvényesítési funkciókat. A `url` típushoz célszerű egy speciális [URL-szabályt |validation#Text inputs] hozzáadni.

.[note]
Más bemeneti típusokhoz, mint például a `number`, `range`, `email`, `date`, `datetime-local`, `time` és `color`, használjon speciális módszereket, mint például az [addInteger |#addInteger], [addFloat |#addFloat], [addEmail |#addEmail] [addDate |#addDate], [addTime |#addTime], [addDateTime |#addDateTime] és [addColor |#addColor], amelyek biztosítják a szerveroldali érvényesítést. A `month` és a `week` típusok még nem támogatottak teljes mértékben minden böngészőben.

Az elemhez beállítható az úgynevezett üres-érték, ami valami olyasmi, mint az alapértelmezett érték, de ha a felhasználó nem írja felül, akkor üres stringet vagy `null` ad vissza.

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


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

Hozzáad egy többsoros szövegmezőt ( [TextArea |api:Nette\Forms\Controls\TextArea] osztály). Ha a felhasználó nem tölti ki a mezőt, akkor egy üres karakterláncot ad vissza `''`, vagy a `setNullable()` segítségével megváltoztatja, hogy `null` adjon vissza.

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

Automatikusan érvényesíti az UTF-8 formátumot és normalizálja a sortöréseket a `\n`. Az egysoros beviteli mezővel ellentétben nem vágja le a szóközöket.

A maximális hossz a `setMaxLength()` segítségével korlátozható. Az [addFilter() |validation#Modifying Input Values] lehetővé teszi a felhasználó által beírt érték megváltoztatását. Az úgynevezett üres értéket a `setEmptyValue()` segítségével állíthatja be.


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

Egész számok beviteli mezőjének hozzáadása ( [TextInput |api:Nette\Forms\Controls\TextInput] osztály). Egész számot vagy a `null` értéket adja vissza, ha a felhasználó nem ad meg semmit.

```php
$form->addInteger('year', 'Év:')
	->addRule($form::Range, 'Az évnek a %d és %d közötti tartományban kell lennie.', [1900, 2023 |1900, 2023]);
```

Az elemet a következő módon jeleníti meg `<input type="numeric">`. A `setHtmlType()` metódus használatával a típust `range` -re változtathatja a csúszkaként való megjelenítéshez, vagy `text` -re, ha a `numeric` speciális viselkedése nélküli normál szövegmezőt szeretné.


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('szint', 'Szint:')
	->setDefaultValue(0)
->addRule($form::Range, 'A szintnek a %d és %d közötti tartományban kell lennie.', [0, 100 |0, 100]);
```

Az elemet a következő módon jeleníti meg `<input type="numeric">`. A `setHtmlType()` metódus használatával a típust `range` -re változtathatja a csúszkaként való megjelenítéshez, vagy `text` -re, ha a `numeric` speciális viselkedése nélküli normál szövegmezőt szeretné.

A Nette és a Chrome böngésző a vesszőt és a pontot is elfogadja tizedesválasztóként. Ahhoz, hogy ez a funkció a Firefoxban is elérhető legyen, ajánlott a `lang` attribútumot beállítani például az adott elemre vagy az egész oldalra, `<html lang="cs">`.


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

E-mail cím mező hozzáadása érvényességi ellenőrzéssel ( [TextInput |api:Nette\Forms\Controls\TextInput] osztály). Ha a felhasználó nem tölti ki a mezőt, akkor egy üres karakterláncot ad vissza `''`, vagy a `setNullable()` segítségével megváltoztatja, hogy `null` adjon vissza.

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

Ellenőrzi, hogy az érték érvényes e-mail cím-e. Nem ellenőrzi, hogy a domain valóban létezik-e, csak a szintaxisát ellenőrzi. Automatikusan érvényesíti az UTF-8 szabványt, a bal és jobb oldali fehérjeleket levágja.

A maximális hossz a `setMaxLength()` segítségével korlátozható. Az [addFilter() |validation#Modifying Input Values] lehetővé teszi a felhasználó által megadott érték megváltoztatását. Az úgynevezett üres értéket a `setEmptyValue()` segítségével állíthatja be.


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

Jelszó mező hozzáadása ( [TextInput |api:Nette\Forms\Controls\TextInput] osztály).

```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].*');
```

Amikor újra elküldi az űrlapot, a bevitel üres lesz. Automatikusan érvényesíti az UTF-8 kódot, levágja a bal és jobb oldali fehérjeleket, és eltávolítja a támadó által küldhető sortöréseket.


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

Hozzáad egy jelölőnégyzetet ( [Checkbox |api:Nette\Forms\Controls\Checkbox] osztály). A mező a `true` vagy a `false` címet adja vissza, attól függően, hogy be van-e jelölve.

```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]
==========================================================================================

Több elem kiválasztására szolgáló jelölőnégyzetek listájának hozzáadása ( [CheckboxList |api:Nette\Forms\Controls\CheckboxList] osztály). Visszaadja a kiválasztott elemek kulcsainak tömbjét. A `getSelectedItems()` módszer kulcsok helyett értékeket ad vissza.

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

Az elemek tömbjét harmadik paraméterként, vagy a `setItems()` módszerrel adjuk át.

Használhatja a `setDisabled(['r', 'g'])` az egyes elemek letiltására.

Az elem automatikusan ellenőrzi, hogy nem történt-e hamisítás, és hogy a kiválasztott elemek valóban a felkínált elemek közé tartoznak-e, és nem lettek-e letiltva. A `getRawValue()` módszerrel a beküldött elemek e fontos ellenőrzés nélkül is lekérdezhetők.

Alapértelmezett értékek beállítása esetén azt is ellenőrzi, hogy azok a felkínált elemek közé tartoznak-e, ellenkező esetben kivételt dob. Ez az ellenőrzés kikapcsolható a `checkDefaultValue(false)` segítségével.

Ha egy űrlapot a `GET` módszerrel küld el, választhat egy kompaktabb adatátviteli módszert, amely megtakarítja a lekérdezési karakterlánc méretét. Ezt az űrlap HTML-attribútumának beállításával lehet aktiválni:

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


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

Rádiógombok hozzáadása ( [RadioList |api:Nette\Forms\Controls\RadioList] osztály). Visszaadja a kiválasztott elem kulcsát, vagy `null`, ha a felhasználó nem választott ki semmit. A `getSelectedItem()` metódus kulcs helyett értéket ad vissza.

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

Az elemek tömbjét harmadik paraméterként adjuk át, vagy a `setItems()` módszerrel.

Használhatja a `setDisabled(['m'])` az egyes elemek letiltására.

Az elem automatikusan ellenőrzi, hogy nem történt-e hamisítás, és hogy a kiválasztott elem valóban a felkínált elemek egyike-e, és nem lett-e letiltva. A `getRawValue()` módszerrel a beküldött elemet e fontos ellenőrzés nélkül is lekérdezheti.

Alapértelmezett érték beállítása esetén azt is ellenőrzi, hogy a felajánlott elemek egyike-e, ellenkező esetben kivételt dob. Ez az ellenőrzés kikapcsolható a `checkDefaultValue(false)` segítségével.


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

Kijelölő doboz hozzáadása ( [SelectBox |api:Nette\Forms\Controls\SelectBox] osztály). Visszaadja a kiválasztott elem kulcsát, vagy `null`, ha a felhasználó nem választott ki semmit. A `getSelectedItem()` metódus kulcs helyett értéket ad vissza.

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

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

Az elemek tömbjét harmadik paraméterként adjuk át, vagy a `setItems()` módszerrel. Az elemek tömbje lehet kétdimenziós is:

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

A kiválasztó dobozok esetében az első elemnek gyakran különleges jelentősége van, ez a call-to-action funkciót látja el. Ilyen bejegyzés hozzáadásához használja a `setPrompt()` módszert.

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

Használhatja a `setDisabled(['CZ', 'SK'])` az egyes elemek letiltására.

Az elem automatikusan ellenőrzi, hogy nem történt-e hamisítás, és hogy a kiválasztott elem valóban a felkínált elemek egyike-e, és nem lett-e letiltva. A `getRawValue()` módszerrel a beküldött elemet e fontos ellenőrzés nélkül is lekérdezheti.

Alapértelmezett érték beállítása esetén azt is ellenőrzi, hogy a felajánlott elemek egyike-e, ellenkező esetben kivételt dob. Ez az ellenőrzés kikapcsolható a `checkDefaultValue(false)` segítségével.


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

Hozzáadja a többválasztós kiválasztó dobozt ( [MultiSelectBox |api:Nette\Forms\Controls\MultiSelectBox] osztály). Visszaadja a kiválasztott elemek kulcsainak tömbjét. A `getSelectedItems()` módszer kulcsok helyett értékeket ad vissza.

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

Az elemek tömbjét harmadik paraméterként, vagy a `setItems()` módszerrel adjuk át. Az elemek tömbje lehet kétdimenziós is.

Használhatja a `setDisabled(['CZ', 'SK'])` az egyes elemek letiltására.

Az elem automatikusan ellenőrzi, hogy nem történt-e hamisítás, és hogy a kiválasztott elemek valóban a felkínált elemek közé tartoznak-e, és nem lettek-e letiltva. A `getRawValue()` módszerrel a beküldött elemek e fontos ellenőrzés nélkül is lekérdezhetők.

Alapértelmezett értékek beállítása esetén azt is ellenőrzi, hogy azok a felkínált elemek közé tartoznak-e, ellenkező esetben kivételt dob. Ez az ellenőrzés kikapcsolható a `checkDefaultValue(false)` segítségével.


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

Fájlfeltöltő mező hozzáadása ( [UploadControl |api:Nette\Forms\Controls\UploadControl] osztály). Visszaadja a [FileUpload |http:request#FileUpload] objektumot, még akkor is, ha a felhasználó nem töltött fel fájlt, amit a `FileUpload::hasFile()` metódussal lehet kideríteni.

```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);
```

Ha a fájl feltöltése nem volt megfelelő, akkor az űrlap nem lett sikeresen elküldve, és hibaüzenet jelenik meg. Vagyis nem szükséges a `FileUpload::isOk()` metódus ellenőrzésére.

Ne bízzon a `FileUpload::getName()` módszer által visszaküldött eredeti fájlnévben, az ügyfél rosszindulatú fájlnevet küldhet azzal a szándékkal, hogy megrongálja vagy feltörje az alkalmazást.

A `MimeType` és a `Image` szabályok az aláírás alapján ismerik fel a kívánt fájl- vagy képtípust. A teljes fájl sértetlenségét nem ellenőrzik. Azt, hogy egy kép nem sérült-e, például a [betöltési |http:request#toImage] próbálkozással állapíthatja meg.


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

Több fájlfeltöltő mező hozzáadása ( [UploadControl |api:Nette\Forms\Controls\UploadControl] osztály). Visszaadja a [FileUpload |http:request#FileUpload] objektumok tömbjét. A `FileUpload::hasFile()` metódus mindegyikükhöz a `true` metódust adja vissza.

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

Ha az egyik fájl feltöltése nem sikerül megfelelően, akkor az űrlapot nem sikeresen küldték el, és hibaüzenet jelenik meg. Vagyis nem szükséges ellenőrizni a `FileUpload::isOk()` metódust.

Ne bízzon a `FileUpload::getName()` módszer által visszaküldött eredeti fájlnevekben, egy ügyfél rosszindulatú fájlnevet küldhet azzal a szándékkal, hogy megrongálja vagy feltörje az alkalmazást.

A `MimeType` és a `Image` szabályok az aláírás alapján ismerik fel a kívánt fájl- vagy képtípust. A teljes fájl sértetlenségét nem ellenőrzik. Azt, hogy egy kép nem sérült-e, például a [betöltési |http:request#toImage] próbálkozással állapíthatja meg.


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

Hozzáad egy mezőt, amely lehetővé teszi a felhasználó számára, hogy egyszerűen beírjon egy dátumot, amely évből, hónapból és napból áll ( [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl] osztály).

Alapértelmezett értékként elfogadja a `DateTimeInterface` objektumokat megvalósító objektumokat, az időt tartalmazó karakterláncot, vagy egy UNIX időbélyeget reprezentáló számot. Ugyanez vonatkozik a `Min`, `Max` vagy `Range` szabály argumentumaira is, amelyek a minimális és maximálisan megengedett dátumot határozzák meg.

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

Alapértelmezés szerint egy `DateTimeImmutable` objektumot ad vissza. A `setFormat()` módszerrel [szöveges formátumot |https://www.php.net/manual/en/datetime.format.php#refsect1-datetime.format-parameters] vagy időbélyeget adhat meg:

```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}
===============================================================================================================

Hozzáad egy mezőt, amely lehetővé teszi a felhasználó számára, hogy egyszerűen beírja az órákból, percekből és opcionálisan másodpercekből álló időt ( [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl] osztály).

Alapértelmezett értékként elfogadja a `DateTimeInterface` objektumokat megvalósító objektumokat, az időt tartalmazó karakterláncot vagy egy UNIX időbélyeget jelentő számot. Csak az ezekből a bemenetekből származó időinformáció kerül felhasználásra; a dátumot figyelmen kívül hagyja. Ugyanez vonatkozik a `Min`, `Max` vagy `Range` szabály argumentumaira is, amelyek a minimális és maximális megengedett időt határozzák meg. Ha a beállított minimális érték nagyobb, mint a maximális, akkor egy éjfélig tartó időtartomány jön létre.

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

Alapértelmezés szerint egy `DateTimeImmutable` objektumot ad vissza (január 1-jei dátummal, 1. év). A `setFormat()` módszerrel [szöveges formátumot |https://www.php.net/manual/en/datetime.format.php#refsect1-datetime.format-parameters] adhat meg:

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


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

Hozzáad egy olyan mezőt, amely lehetővé teszi a felhasználó számára, hogy egyszerűen beírja a dátumot és az időt, amely évből, hónapból, napból, órából, percből és opcionálisan másodpercekből áll ( [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl] osztály).

Alapértelmezett értékként elfogadja a `DateTimeInterface` objektumokat megvalósító objektumokat, egy karakterláncot az idővel, vagy egy UNIX időbélyeget reprezentáló számot. Ugyanez vonatkozik a `Min`, `Max` vagy `Range` szabály argumentumaira is, amelyek a minimális és maximálisan megengedett dátumot határozzák meg.

```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'));
```

Alapértelmezés szerint egy `DateTimeImmutable` objektumot ad vissza. A `setFormat()` módszerrel [szöveges formátumot |https://www.php.net/manual/en/datetime.format.php#refsect1-datetime.format-parameters] vagy időbélyeget adhat meg:

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


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

Hozzáad egy színválasztó mezőt ( [ColorPicker |api:Nette\Forms\Controls\ColorPicker] osztály). A szín egy karakterlánc a `#rrggbb` formátumban. Ha a felhasználó nem választ, a visszaküldött alapértelmezett szín a fekete `#000000`.

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


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

Rejtett mező hozzáadása ( [HiddenField |api:Nette\Forms\Controls\HiddenField] osztály).

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

Használja a `setNullable()` címet, hogy üres karakterlánc helyett `null` -t adjon vissza. Az [addFilter() |validation#Modifying Input Values] lehetővé teszi a beküldött érték megváltoztatását.

Bár az elem rejtve van, **fontos tudatosítani**, hogy az értékét egy támadó még mindig módosíthatja vagy meghamisíthatja. Az adatmanipulációval kapcsolatos biztonsági kockázatok megelőzése érdekében mindig alaposan ellenőrizze és validálja az összes kapott értéket a kiszolgálói oldalon.


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

Hozzáadja a submit gombot ( [SubmitButton |api:Nette\Forms\Controls\SubmitButton] osztály).

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

Lehetséges, hogy egynél több submit gomb legyen az űrlapon:

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

Ahhoz, hogy megtudja, melyikre kattintottak, használja a következőt:

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

Ha nem akarja érvényesíteni az űrlapot, amikor egy beküldő gombot megnyomnak (például a *Cancel* vagy *Preview* gombokat), akkor a [setValidationScope() |validation#Disabling Validation] segítségével kikapcsolhatja.


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

Hozzáad egy gombot ( [Button |api:Nette\Forms\Controls\Button] osztály) submit funkció nélkül. Hasznos más funkciók id-hez kötéséhez, például egy JavaScript művelethez.

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


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

Hozzáadja a submit gombot kép formájában ( [ImageButton |api:Nette\Forms\Controls\ImageButton] osztály).

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

Több submit gomb használata esetén megtudhatja, hogy melyikre kattintott a `$form['submit']->isSubmittedBy()`.


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

Hozzáad egy al-űrlapot ( [Container |api:Nette\Forms\Container] osztály), vagy konténert, amely ugyanúgy kezelhető, mint egy űrlap. Ez azt jelenti, hogy használhatja az olyan módszereket, mint a `setDefaults()` vagy a `getValues()`.

```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:');
```

Az elküldött adatokat ezután többdimenziós struktúraként adja vissza:

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


A beállítások áttekintése .[#toc-overview-of-settings]
======================================================

Minden elemhez a következő metódusokat hívhatjuk meg (a teljes áttekintésért lásd az [API dokumentációt |https://api.nette.org/forms/master/Nette/Forms/Controls.html] ):

.[table-form-methods language-php]
| `setDefaultValue($value)` | az alapértelmezett érték beállítása
| `getValue()` | aktuális érték lekérése
| `setOmitted()` | [kihagyott értékek |#omitted values]
| `setDisabled()` | [bemenetek letiltása |#disabling inputs]

Renderelés:
.[table-form-methods language-php]
| `setCaption($caption)`| az elem feliratának módosítása
| `setTranslator($translator)` | [fordító beállítása|rendering#translating]
| `setHtmlAttribute($name, $value)` | beállítja az elem [HTML-attribútumát |rendering#HTML attributes].
| `setHtmlId($id)` | beállítja a HTML-attribútumot `id`
| `setHtmlType($type)` | HTML-attribútum beállítása `type`
| `setHtmlName($name)`| HTML-attribútum beállítása `name`
| `setOption($key, $value)` | beállítja [a renderelési adatokat |rendering#Options]

Érvényesítés:
.[table-form-methods language-php]
| `setRequired()` | [kötelező mező |validation]
| `addRule()` | [érvényesítési szabály beállítása|validation#Rules]
| `addCondition()`, `addConditionOn()` | [érvényesítési feltétel beállítása|validation#Conditions]
| `addError($message)`| [hibaüzenet átadása |validation#processing-errors]

A következő metódusok hívhatók a `addText()`, `addPassword()`, `addTextArea()`, `addEmail()`, `addInteger()` elemekhez:

.[table-form-methods language-php]
| `setNullable()`| beállítja, hogy a getValue() az üres karakterlánc helyett a `null` értéket adja-e vissza.
| `setEmptyValue($value)` | beállítja a speciális értéket, amelyet üres karakterláncként kezel.
| `setMaxLength($length)`| beállítja a megengedett karakterek maximális számát.
| `addFilter($filter)`| [bemeneti értékek módosítása |validation#Modifying Input Values]


Kihagyott értékek .[#toc-omitted-values]
========================================

Ha nem érdekel a felhasználó által megadott érték, a `setOmitted()` segítségével kihagyhatjuk azt a `$form->getValues​()` metódus által szolgáltatott vagy a kezelőknek átadott eredményből. Ez alkalmas különböző jelszavak ellenőrzésére, spamellenes mezőkhöz stb.

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


Bemenetek letiltása .[#toc-disabling-inputs]
============================================

A bemeneteket a `setDisabled()` segítségével lehet letiltani. A letiltott bemenetet a felhasználó nem tudja szerkeszteni.

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

A letiltott bemeneteket a böngésző nem küldi el a kiszolgálónak, így a `$form->getValues()` funkció által visszaküldött adatokban sem találja meg őket. Ha azonban beállítja a `setOmitted(false)`, a Nette az alapértelmezett értéküket is tartalmazza ezekben az adatokban.

A `setDisabled()` meghívásakor **a bemenet értéke biztonsági okokból törlődik**. Ha alapértelmezett értéket állít be, akkor azt a deaktiválás után kell megtennie:

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

A letiltott bejegyzések alternatívája a HTML `readonly` attribútummal rendelkező mezők, amelyeket a böngésző küld a kiszolgálónak. Bár a mező csak olvasható, **fontos tudatosítani**, hogy az értékét egy támadó még mindig módosíthatja vagy meghamisíthatja.


Egyéni vezérlők .[#toc-custom-controls]
=======================================

A beépített űrlapvezérlők széles skálája mellett egyéni vezérlőket is hozzáadhat az űrlaphoz az alábbiak szerint:

```php
$form->addComponent(new DateInput('Date:'), 'date');
// alternatív szintaxis: $form['date'] = new DateInput('Date:');
```

.[note]
A form a [Container | component-model:#Container] osztály leszármazottja, az elemek pedig a [Component | component-model:#Component] osztály leszármazottai.

Van lehetőség új űrlapmódszerek definiálására az egyéni elemek hozzáadásához (pl. `$form->addZip()`). Ezek az úgynevezett kiterjesztési metódusok. Hátrányuk, hogy a szerkesztőkben a kódsegédletek nem működnek ezeknél.

```php
use Nette\Forms\Container;

// adds method addZip(string $name, ?string $label = null)
Container::extensionMethod('addZip', function (Container $form, string $name, ?string $label = null) {
	return $form->addText($name, $label)
		->addRule($form::Pattern, 'Legalább 5 szám', '[0-9]{5}');
});

// használat
$form->addZip('zip', 'Irányítószám:');
```


Alacsony szintű mezők .[#toc-low-level-fields]
==============================================

Egy elem hozzáadásához az űrlaphoz nem kell meghívni a `$form->addXyz()` címet. Az űrlapelemeket ehelyett kizárólag sablonokban lehet bevezetni. Ez akkor hasznos, ha például dinamikus elemeket kell létrehozni:

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

A beküldés után lekérdezheti az értékeket:

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

Az első paraméterben megadhatja az elem típusát (`DataFile` a `type=file`, `DataLine` az egysoros bemenetekhez, mint a `text`, `password` vagy `email` és `DataText` a többi). A második paraméter megfelel a `name` HTML-attribútumnak. Ha meg kell őrizni a kulcsokat, akkor az első paramétert kombinálhatja a `DataKeys` paraméterrel. Ez a `select`, `radioList` vagy `checkboxList` esetében hasznos.

A `getHttpData()` szanált bemenetet ad vissza. Ebben az esetben mindig érvényes UTF-8-as karakterláncok tömbje lesz, függetlenül attól, hogy az űrlap által küldött támadó mit küldött. Ez egy alternatívája a `$_POST` vagy `$_GET` közvetlen munkájának, ha biztonságos adatokat szeretne kapni.

Nyomtatvány vezérlők

A beépített űrlapvezérlők áttekintése.

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

Egysoros szövegmező hozzáadása ( TextInput osztály). Ha a felhasználó nem tölti ki a mezőt, akkor egy üres karakterláncot ad vissza '', vagy a setNullable() segítségével megváltoztatja, hogy null adjon vissza.

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

Automatikusan érvényesíti az UTF-8 szabványt, levágja a bal és jobb oldali fehérjeleket, és eltávolítja a támadó által küldhető sortöréseket.

A maximális hossz a setMaxLength() segítségével korlátozható. Az addFilter() lehetővé teszi a felhasználó által megadott érték megváltoztatását.

A szövegmező vizuális karakterét a search, tel vagy url típusokra változtathatja a setHtmlType() segítségével, ahogyan az a specifikációban látható. Ne feledje, hogy a típus megváltoztatása csak vizuális, és nem végez érvényesítési funkciókat. A url típushoz célszerű egy speciális URL-szabályt hozzáadni.

Más bemeneti típusokhoz, mint például a number, range, email, date, datetime-local, time és color, használjon speciális módszereket, mint például az addInteger, addFloat, addEmail addDate, addTime, addDateTime és addColor, amelyek biztosítják a szerveroldali érvényesítést. A month és a week típusok még nem támogatottak teljes mértékben minden böngészőben.

Az elemhez beállítható az úgynevezett üres-érték, ami valami olyasmi, mint az alapértelmezett érték, de ha a felhasználó nem írja felül, akkor üres stringet vagy null ad vissza.

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

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

Hozzáad egy többsoros szövegmezőt ( TextArea osztály). Ha a felhasználó nem tölti ki a mezőt, akkor egy üres karakterláncot ad vissza '', vagy a setNullable() segítségével megváltoztatja, hogy null adjon vissza.

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

Automatikusan érvényesíti az UTF-8 formátumot és normalizálja a sortöréseket a \n. Az egysoros beviteli mezővel ellentétben nem vágja le a szóközöket.

A maximális hossz a setMaxLength() segítségével korlátozható. Az addFilter() lehetővé teszi a felhasználó által beírt érték megváltoztatását. Az úgynevezett üres értéket a setEmptyValue() segítségével állíthatja be.

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

Egész számok beviteli mezőjének hozzáadása ( TextInput osztály). Egész számot vagy a null értéket adja vissza, ha a felhasználó nem ad meg semmit.

$form->addInteger('year', 'Év:')
	->addRule($form::Range, 'Az évnek a %d és %d közötti tartományban kell lennie.', [1900, 2023 |1900, 2023]);

Az elemet a következő módon jeleníti meg <input type="numeric">. A setHtmlType() metódus használatával a típust range -re változtathatja a csúszkaként való megjelenítéshez, vagy text -re, ha a numeric speciális viselkedése nélküli normál szövegmezőt szeretné.

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('szint', 'Szint:')
	->setDefaultValue(0)
->addRule($form::Range, 'A szintnek a %d és %d közötti tartományban kell lennie.', [0, 100 |0, 100]);

Az elemet a következő módon jeleníti meg <input type="numeric">. A setHtmlType() metódus használatával a típust range -re változtathatja a csúszkaként való megjelenítéshez, vagy text -re, ha a numeric speciális viselkedése nélküli normál szövegmezőt szeretné.

A Nette és a Chrome böngésző a vesszőt és a pontot is elfogadja tizedesválasztóként. Ahhoz, hogy ez a funkció a Firefoxban is elérhető legyen, ajánlott a lang attribútumot beállítani például az adott elemre vagy az egész oldalra, <html lang="cs">.

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

E-mail cím mező hozzáadása érvényességi ellenőrzéssel ( TextInput osztály). Ha a felhasználó nem tölti ki a mezőt, akkor egy üres karakterláncot ad vissza '', vagy a setNullable() segítségével megváltoztatja, hogy null adjon vissza.

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

Ellenőrzi, hogy az érték érvényes e-mail cím-e. Nem ellenőrzi, hogy a domain valóban létezik-e, csak a szintaxisát ellenőrzi. Automatikusan érvényesíti az UTF-8 szabványt, a bal és jobb oldali fehérjeleket levágja.

A maximális hossz a setMaxLength() segítségével korlátozható. Az addFilter() lehetővé teszi a felhasználó által megadott érték megváltoztatását. Az úgynevezett üres értéket a setEmptyValue() segítségével állíthatja be.

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

Jelszó mező hozzáadása ( TextInput osztály).

$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].*');

Amikor újra elküldi az űrlapot, a bevitel üres lesz. Automatikusan érvényesíti az UTF-8 kódot, levágja a bal és jobb oldali fehérjeleket, és eltávolítja a támadó által küldhető sortöréseket.

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

Hozzáad egy jelölőnégyzetet ( Checkbox osztály). A mező a true vagy a false címet adja vissza, attól függően, hogy be van-e jelölve.

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

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

Több elem kiválasztására szolgáló jelölőnégyzetek listájának hozzáadása ( CheckboxList osztály). Visszaadja a kiválasztott elemek kulcsainak tömbjét. A getSelectedItems() módszer kulcsok helyett értékeket ad vissza.

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

Az elemek tömbjét harmadik paraméterként, vagy a setItems() módszerrel adjuk át.

Használhatja a setDisabled(['r', 'g']) az egyes elemek letiltására.

Az elem automatikusan ellenőrzi, hogy nem történt-e hamisítás, és hogy a kiválasztott elemek valóban a felkínált elemek közé tartoznak-e, és nem lettek-e letiltva. A getRawValue() módszerrel a beküldött elemek e fontos ellenőrzés nélkül is lekérdezhetők.

Alapértelmezett értékek beállítása esetén azt is ellenőrzi, hogy azok a felkínált elemek közé tartoznak-e, ellenkező esetben kivételt dob. Ez az ellenőrzés kikapcsolható a checkDefaultValue(false) segítségével.

Ha egy űrlapot a GET módszerrel küld el, választhat egy kompaktabb adatátviteli módszert, amely megtakarítja a lekérdezési karakterlánc méretét. Ezt az űrlap HTML-attribútumának beállításával lehet aktiválni:

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

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

Rádiógombok hozzáadása ( RadioList osztály). Visszaadja a kiválasztott elem kulcsát, vagy null, ha a felhasználó nem választott ki semmit. A getSelectedItem() metódus kulcs helyett értéket ad vissza.

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

Az elemek tömbjét harmadik paraméterként adjuk át, vagy a setItems() módszerrel.

Használhatja a setDisabled(['m']) az egyes elemek letiltására.

Az elem automatikusan ellenőrzi, hogy nem történt-e hamisítás, és hogy a kiválasztott elem valóban a felkínált elemek egyike-e, és nem lett-e letiltva. A getRawValue() módszerrel a beküldött elemet e fontos ellenőrzés nélkül is lekérdezheti.

Alapértelmezett érték beállítása esetén azt is ellenőrzi, hogy a felajánlott elemek egyike-e, ellenkező esetben kivételt dob. Ez az ellenőrzés kikapcsolható a checkDefaultValue(false) segítségével.

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

Kijelölő doboz hozzáadása ( SelectBox osztály). Visszaadja a kiválasztott elem kulcsát, vagy null, ha a felhasználó nem választott ki semmit. A getSelectedItem() metódus kulcs helyett értéket ad vissza.

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

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

Az elemek tömbjét harmadik paraméterként adjuk át, vagy a setItems() módszerrel. Az elemek tömbje lehet kétdimenziós is:

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

A kiválasztó dobozok esetében az első elemnek gyakran különleges jelentősége van, ez a call-to-action funkciót látja el. Ilyen bejegyzés hozzáadásához használja a setPrompt() módszert.

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

Használhatja a setDisabled(['CZ', 'SK']) az egyes elemek letiltására.

Az elem automatikusan ellenőrzi, hogy nem történt-e hamisítás, és hogy a kiválasztott elem valóban a felkínált elemek egyike-e, és nem lett-e letiltva. A getRawValue() módszerrel a beküldött elemet e fontos ellenőrzés nélkül is lekérdezheti.

Alapértelmezett érték beállítása esetén azt is ellenőrzi, hogy a felajánlott elemek egyike-e, ellenkező esetben kivételt dob. Ez az ellenőrzés kikapcsolható a checkDefaultValue(false) segítségével.

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

Hozzáadja a többválasztós kiválasztó dobozt ( MultiSelectBox osztály). Visszaadja a kiválasztott elemek kulcsainak tömbjét. A getSelectedItems() módszer kulcsok helyett értékeket ad vissza.

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

Az elemek tömbjét harmadik paraméterként, vagy a setItems() módszerrel adjuk át. Az elemek tömbje lehet kétdimenziós is.

Használhatja a setDisabled(['CZ', 'SK']) az egyes elemek letiltására.

Az elem automatikusan ellenőrzi, hogy nem történt-e hamisítás, és hogy a kiválasztott elemek valóban a felkínált elemek közé tartoznak-e, és nem lettek-e letiltva. A getRawValue() módszerrel a beküldött elemek e fontos ellenőrzés nélkül is lekérdezhetők.

Alapértelmezett értékek beállítása esetén azt is ellenőrzi, hogy azok a felkínált elemek közé tartoznak-e, ellenkező esetben kivételt dob. Ez az ellenőrzés kikapcsolható a checkDefaultValue(false) segítségével.

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

Fájlfeltöltő mező hozzáadása ( UploadControl osztály). Visszaadja a FileUpload objektumot, még akkor is, ha a felhasználó nem töltött fel fájlt, amit a FileUpload::hasFile() metódussal lehet kideríteni.

$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);

Ha a fájl feltöltése nem volt megfelelő, akkor az űrlap nem lett sikeresen elküldve, és hibaüzenet jelenik meg. Vagyis nem szükséges a FileUpload::isOk() metódus ellenőrzésére.

Ne bízzon a FileUpload::getName() módszer által visszaküldött eredeti fájlnévben, az ügyfél rosszindulatú fájlnevet küldhet azzal a szándékkal, hogy megrongálja vagy feltörje az alkalmazást.

A MimeType és a Image szabályok az aláírás alapján ismerik fel a kívánt fájl- vagy képtípust. A teljes fájl sértetlenségét nem ellenőrzik. Azt, hogy egy kép nem sérült-e, például a betöltési próbálkozással állapíthatja meg.

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

Több fájlfeltöltő mező hozzáadása ( UploadControl osztály). Visszaadja a FileUpload objektumok tömbjét. A FileUpload::hasFile() metódus mindegyikükhöz a true metódust adja vissza.

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

Ha az egyik fájl feltöltése nem sikerül megfelelően, akkor az űrlapot nem sikeresen küldték el, és hibaüzenet jelenik meg. Vagyis nem szükséges ellenőrizni a FileUpload::isOk() metódust.

Ne bízzon a FileUpload::getName() módszer által visszaküldött eredeti fájlnevekben, egy ügyfél rosszindulatú fájlnevet küldhet azzal a szándékkal, hogy megrongálja vagy feltörje az alkalmazást.

A MimeType és a Image szabályok az aláírás alapján ismerik fel a kívánt fájl- vagy képtípust. A teljes fájl sértetlenségét nem ellenőrzik. Azt, hogy egy kép nem sérült-e, például a betöltési próbálkozással állapíthatja meg.

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

Hozzáad egy mezőt, amely lehetővé teszi a felhasználó számára, hogy egyszerűen beírjon egy dátumot, amely évből, hónapból és napból áll ( DateTimeControl osztály).

Alapértelmezett értékként elfogadja a DateTimeInterface objektumokat megvalósító objektumokat, az időt tartalmazó karakterláncot, vagy egy UNIX időbélyeget reprezentáló számot. Ugyanez vonatkozik a Min, Max vagy Range szabály argumentumaira is, amelyek a minimális és maximálisan megengedett dátumot határozzák meg.

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

Alapértelmezés szerint egy DateTimeImmutable objektumot ad vissza. A setFormat() módszerrel szöveges formátumot vagy időbélyeget adhat meg:

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

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

Hozzáad egy mezőt, amely lehetővé teszi a felhasználó számára, hogy egyszerűen beírja az órákból, percekből és opcionálisan másodpercekből álló időt ( DateTimeControl osztály).

Alapértelmezett értékként elfogadja a DateTimeInterface objektumokat megvalósító objektumokat, az időt tartalmazó karakterláncot vagy egy UNIX időbélyeget jelentő számot. Csak az ezekből a bemenetekből származó időinformáció kerül felhasználásra; a dátumot figyelmen kívül hagyja. Ugyanez vonatkozik a Min, Max vagy Range szabály argumentumaira is, amelyek a minimális és maximális megengedett időt határozzák meg. Ha a beállított minimális érték nagyobb, mint a maximális, akkor egy éjfélig tartó időtartomány jön létre.

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

Alapértelmezés szerint egy DateTimeImmutable objektumot ad vissza (január 1-jei dátummal, 1. év). A setFormat() módszerrel szöveges formátumot adhat meg:

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

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

Hozzáad egy olyan mezőt, amely lehetővé teszi a felhasználó számára, hogy egyszerűen beírja a dátumot és az időt, amely évből, hónapból, napból, órából, percből és opcionálisan másodpercekből áll ( DateTimeControl osztály).

Alapértelmezett értékként elfogadja a DateTimeInterface objektumokat megvalósító objektumokat, egy karakterláncot az idővel, vagy egy UNIX időbélyeget reprezentáló számot. Ugyanez vonatkozik a Min, Max vagy Range szabály argumentumaira is, amelyek a minimális és maximálisan megengedett dátumot határozzák meg.

$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'));

Alapértelmezés szerint egy DateTimeImmutable objektumot ad vissza. A setFormat() módszerrel szöveges formátumot vagy időbélyeget adhat meg:

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

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

Hozzáad egy színválasztó mezőt ( ColorPicker osztály). A szín egy karakterlánc a #rrggbb formátumban. Ha a felhasználó nem választ, a visszaküldött alapértelmezett szín a fekete #000000.

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

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

Rejtett mező hozzáadása ( HiddenField osztály).

$form->addHidden('userid');

Használja a setNullable() címet, hogy üres karakterlánc helyett null -t adjon vissza. Az addFilter() lehetővé teszi a beküldött érték megváltoztatását.

Bár az elem rejtve van, fontos tudatosítani, hogy az értékét egy támadó még mindig módosíthatja vagy meghamisíthatja. Az adatmanipulációval kapcsolatos biztonsági kockázatok megelőzése érdekében mindig alaposan ellenőrizze és validálja az összes kapott értéket a kiszolgálói oldalon.

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

Hozzáadja a submit gombot ( SubmitButton osztály).

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

Lehetséges, hogy egynél több submit gomb legyen az űrlapon:

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

Ahhoz, hogy megtudja, melyikre kattintottak, használja a következőt:

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

Ha nem akarja érvényesíteni az űrlapot, amikor egy beküldő gombot megnyomnak (például a Cancel vagy Preview gombokat), akkor a setValidationScope() segítségével kikapcsolhatja.

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

Hozzáad egy gombot ( Button osztály) submit funkció nélkül. Hasznos más funkciók id-hez kötéséhez, például egy JavaScript művelethez.

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

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

Hozzáadja a submit gombot kép formájában ( ImageButton osztály).

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

Több submit gomb használata esetén megtudhatja, hogy melyikre kattintott a $form['submit']->isSubmittedBy().

addContainer(string|int $name): Container

Hozzáad egy al-űrlapot ( Container osztály), vagy konténert, amely ugyanúgy kezelhető, mint egy űrlap. Ez azt jelenti, hogy használhatja az olyan módszereket, mint a setDefaults() vagy a getValues().

$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:');

Az elküldött adatokat ezután többdimenziós struktúraként adja vissza:

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

A beállítások áttekintése

Minden elemhez a következő metódusokat hívhatjuk meg (a teljes áttekintésért lásd az API dokumentációt ):

setDefaultValue($value) az alapértelmezett érték beállítása
getValue() aktuális érték lekérése
setOmitted() kihagyott értékek
setDisabled() bemenetek letiltása

Renderelés:

setCaption($caption) az elem feliratának módosítása
setTranslator($translator) fordító beállítása
setHtmlAttribute($name, $value) beállítja az elem HTML-attribútumát.
setHtmlId($id) beállítja a HTML-attribútumot id
setHtmlType($type) HTML-attribútum beállítása type
setHtmlName($name) HTML-attribútum beállítása name
setOption($key, $value) beállítja a renderelési adatokat

Érvényesítés:

setRequired() kötelező mező
addRule() érvényesítési szabály beállítása
addCondition(), addConditionOn() érvényesítési feltétel beállítása
addError($message) hibaüzenet átadása

A következő metódusok hívhatók a addText(), addPassword(), addTextArea(), addEmail(), addInteger() elemekhez:

setNullable() beállítja, hogy a getValue() az üres karakterlánc helyett a null értéket adja-e vissza.
setEmptyValue($value) beállítja a speciális értéket, amelyet üres karakterláncként kezel.
setMaxLength($length) beállítja a megengedett karakterek maximális számát.
addFilter($filter) bemeneti értékek módosítása

Kihagyott értékek

Ha nem érdekel a felhasználó által megadott érték, a setOmitted() segítségével kihagyhatjuk azt a $form->getValues​() metódus által szolgáltatott vagy a kezelőknek átadott eredményből. Ez alkalmas különböző jelszavak ellenőrzésére, spamellenes mezőkhöz stb.

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

Bemenetek letiltása

A bemeneteket a setDisabled() segítségével lehet letiltani. A letiltott bemenetet a felhasználó nem tudja szerkeszteni.

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

A letiltott bemeneteket a böngésző nem küldi el a kiszolgálónak, így a $form->getValues() funkció által visszaküldött adatokban sem találja meg őket. Ha azonban beállítja a setOmitted(false), a Nette az alapértelmezett értéküket is tartalmazza ezekben az adatokban.

A setDisabled() meghívásakor a bemenet értéke biztonsági okokból törlődik. Ha alapértelmezett értéket állít be, akkor azt a deaktiválás után kell megtennie:

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

A letiltott bejegyzések alternatívája a HTML readonly attribútummal rendelkező mezők, amelyeket a böngésző küld a kiszolgálónak. Bár a mező csak olvasható, fontos tudatosítani, hogy az értékét egy támadó még mindig módosíthatja vagy meghamisíthatja.

Egyéni vezérlők

A beépített űrlapvezérlők széles skálája mellett egyéni vezérlőket is hozzáadhat az űrlaphoz az alábbiak szerint:

$form->addComponent(new DateInput('Date:'), 'date');
// alternatív szintaxis: $form['date'] = new DateInput('Date:');

A form a Container osztály leszármazottja, az elemek pedig a Component osztály leszármazottai.

Van lehetőség új űrlapmódszerek definiálására az egyéni elemek hozzáadásához (pl. $form->addZip()). Ezek az úgynevezett kiterjesztési metódusok. Hátrányuk, hogy a szerkesztőkben a kódsegédletek nem működnek ezeknél.

use Nette\Forms\Container;

// adds method addZip(string $name, ?string $label = null)
Container::extensionMethod('addZip', function (Container $form, string $name, ?string $label = null) {
	return $form->addText($name, $label)
		->addRule($form::Pattern, 'Legalább 5 szám', '[0-9]{5}');
});

// használat
$form->addZip('zip', 'Irányítószám:');

Alacsony szintű mezők

Egy elem hozzáadásához az űrlaphoz nem kell meghívni a $form->addXyz() címet. Az űrlapelemeket ehelyett kizárólag sablonokban lehet bevezetni. Ez akkor hasznos, ha például dinamikus elemeket kell létrehozni:

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

A beküldés után lekérdezheti az értékeket:

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

Az első paraméterben megadhatja az elem típusát (DataFile a type=file, DataLine az egysoros bemenetekhez, mint a text, password vagy email és DataText a többi). A második paraméter megfelel a name HTML-attribútumnak. Ha meg kell őrizni a kulcsokat, akkor az első paramétert kombinálhatja a DataKeys paraméterrel. Ez a select, radioList vagy checkboxList esetében hasznos.

A getHttpData() szanált bemenetet ad vissza. Ebben az esetben mindig érvényes UTF-8-as karakterláncok tömbje lesz, függetlenül attól, hogy az űrlap által küldött támadó mit küldött. Ez egy alternatívája a $_POST vagy $_GET közvetlen munkájának, ha biztonságos adatokat szeretne kapni.