Űrlap elemek

A standard űrlap elemek áttekintése.

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

Hozzáad egy egysoros szöveges mezőt (osztály: TextInput). Ha a felhasználó nem tölti ki a mezőt, üres stringet '' ad vissza, vagy a setNullable() segítségével beállítható, hogy null-t adjon vissza.

$form->addText('name', 'Név:')
	->setRequired()
	->setNullable();

Automatikusan validálja az UTF-8 kódolást, levágja a bal- és jobboldali szóközöket, és eltávolítja azokat az újsor karaktereket, amelyeket egy támadó küldhetett.

A maximális hosszúságot a setMaxLength() segítségével lehet korlátozni. A felhasználó által bevitt érték módosítását az addFilter() teszi lehetővé.

A setHtmlType() segítségével megváltoztatható a szöveges mező vizuális jellege olyan típusokra, mint a search, tel vagy url, lásd a specifikációt. Ne feledje, hogy a típusváltoztatás csak vizuális, és nem helyettesíti a validálási funkciót. Az url típushoz célszerű hozzáadni egy specifikus URL validálási szabályt.

Más beviteli típusokhoz, mint például a number, range, email, date, datetime-local, time és color, használjon specializált metódusokat, mint a addInteger, addFloat, addEmail addDate, addTime, addDateTime és addColor, amelyek biztosítják a szerveroldali validációt. A month és week típusok még nem támogatottak teljes mértékben minden böngészőben.

Az elemhez beállítható ún. empty-value, ami valami olyasmi, mint az alapértelmezett érték, de ha a felhasználó nem változtatja meg, az elem üres stringet vagy null-t ad vissza.

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

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

Hozzáad egy mezőt többsoros szöveg bevitelére (osztály: TextArea). Ha a felhasználó nem tölti ki a mezőt, üres stringet '' ad vissza, vagy a setNullable() segítségével beállítható, hogy null-t adjon vissza.

$form->addTextArea('note', 'Megjegyzés:')
	->addRule($form::MaxLength, 'A megjegyzés túl hosszú', 10000);

Automatikusan validálja az UTF-8 kódolást és normalizálja a sorelválasztókat \n-re. Ellentétben az egysoros beviteli mezővel, itt nem történik szóközök levágása.

A maximális hosszúságot a setMaxLength() segítségével lehet korlátozni. A felhasználó által bevitt érték módosítását az addFilter() teszi lehetővé. Beállítható ún. empty-value a setEmptyValue() segítségével.

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

Hozzáad egy mezőt egész számok bevitelére (osztály: TextInput). Vagy integert ad vissza, vagy null-t, ha a felhasználó nem ad meg semmit.

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

Az elem <input type="number">-ként jelenik meg. A setHtmlType() metódus használatával a típust range-re lehet változtatni a csúszka formájában történő megjelenítéshez, vagy text-re, ha a standard szöveges mezőt részesíti előnyben a number típus speciális viselkedése nélkül.

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

Hozzáad egy mezőt tizedes számok bevitelére (osztály: TextInput). Vagy floatot ad vissza, vagy null-t, ha a felhasználó nem ad meg semmit.

$form->addFloat('level', 'Szint:')
	->setDefaultValue(0)
	->addRule($form::Range, 'A szintnek %d és %d között kell lennie.', [0, 100]);

Az elem <input type="number">-ként jelenik meg. A setHtmlType() metódus használatával a típust range-re lehet változtatni a csúszka formájában történő megjelenítéshez, vagy text-re, ha a standard szöveges mezőt részesíti előnyben a number típus speciális viselkedése nélkül.

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

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

Hozzáad egy mezőt e-mail cím bevitelére (osztály: TextInput). Ha a felhasználó nem tölti ki a mezőt, üres stringet '' ad vissza, vagy a setNullable() segítségével beállítható, hogy null-t adjon vissza.

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

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 szintaxist ellenőrzi. Automatikusan validálja az UTF-8 kódolást, levágja a bal- és jobboldali szóközöket.

A maximális hosszúságot a setMaxLength() segítségével lehet korlátozni. A felhasználó által bevitt érték módosítását az addFilter() teszi lehetővé. Beállítható ún. empty-value a setEmptyValue() segítségével.

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

Hozzáad egy mezőt jelszó bevitelére (osztály: TextInput).

$form->addPassword('password', 'Jelszó:')
	->setRequired()
	->addRule($form::MinLength, 'A jelszónak legalább %d karakter hosszúnak kell lennie', 8)
	->addRule($form::Pattern, 'Tartalmaznia kell számjegyet', '.*[0-9].*');

Az űrlap újramegjelenítésekor a mező üres lesz. Automatikusan validálja az UTF-8 kódolást, levágja a bal- és jobboldali szóközöket, és eltávolítja azokat az újsor karaktereket, amelyeket egy támadó küldhetett.

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

Hozzáad egy jelölőnégyzetet (osztály: Checkbox). Vagy true vagy false értéket ad vissza, attól függően, hogy be van-e jelölve.

$form->addCheckbox('agree', 'Elfogadom a feltételeket')
	->setRequired('El kell fogadni a feltételeket');

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

Hozzáad jelölőnégyzeteket több elem kiválasztásához (osztály: CheckboxList). A kiválasztott elemek kulcsainak tömbjét adja vissza. A getSelectedItems() metódus az értékeket adja vissza a kulcsok helyett.

$form->addCheckboxList('colors', 'Színek:', [
	'r' => 'piros',
	'g' => 'zöld',
	'b' => 'kék',
]);

A kínált elemek tömbjét harmadik paraméterként vagy a setItems() metódussal adjuk át.

A setDisabled(['r', 'g']) segítségével letilthatók az egyes elemek.

Az elem automatikusan ellenőrzi, hogy nem történt-e hamisítás, és hogy a kiválasztott elemek valóban a kínáltak közül valók-e, és nem voltak-e letiltva. A getRawValue() metódussal lekérhetők az elküldött elemek e fontos ellenőrzés nélkül.

Az alapértelmezett kiválasztott elemek beállításakor is ellenőrzi, hogy azok a kínáltak közül valók-e, különben kivételt dob. Ezt az ellenőrzést a checkDefaultValue(false) segítségével lehet kikapcsolni.

Ha az űrlapot GET metódussal küldi el, választhat egy kompaktabb adatátviteli módot, amely csökkenti a query string méretét. Ez az űrlap HTML attribútumának beállításával aktiválható:

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

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

Hozzáad rádiógombokat (osztály: RadioList). A kiválasztott elem kulcsát adja vissza, vagy null-t, ha a felhasználó nem választott semmit. A getSelectedItem() metódus az értéket adja vissza a kulcs helyett.

$sex = [
	'm' => 'férfi',
	'f' => 'nő',
];
$form->addRadioList('gender', 'Nem:', $sex);

A kínált elemek tömbjét harmadik paraméterként vagy a setItems() metódussal adjuk át.

A setDisabled(['m', 'f']) segítségével letilthatók az egyes elemek.

Az elem automatikusan ellenőrzi, hogy nem történt-e hamisítás, és hogy a kiválasztott elem valóban a kínáltak közül való-e, és nem volt-e letiltva. A getRawValue() metódussal lekérhető az elküldött elem e fontos ellenőrzés nélkül.

Az alapértelmezett kiválasztott elem beállításakor is ellenőrzi, hogy az a kínáltak közül való-e, különben kivételt dob. Ezt az ellenőrzést a checkDefaultValue(false) segítségével lehet kikapcsolni.

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

Hozzáad egy select boxot (osztály: SelectBox). A kiválasztott elem kulcsát adja vissza, vagy null-t, ha a felhasználó nem választott semmit. A getSelectedItem() metódus az értéket adja vissza a kulcs helyett.

$countries = [
	'CZ' => 'Cseh Köztársaság',
	'SK' => 'Szlovákia',
	'GB' => 'Nagy-Britannia',
];

$form->addSelect('country', 'Ország:', $countries)
	->setDefaultValue('SK');

A kínált elemek tömbjét harmadik paraméterként vagy a setItems() metódussal adjuk át. Az elemek lehetnek kétdimenziós tömbök is:

$countries = [
	'Európa' => [
		'CZ' => 'Cseh Köztársaság',
		'SK' => 'Szlovákia',
		'GB' => 'Nagy-Britannia',
	],
	'CA' => 'Kanada',
	'US' => 'USA',
	'?'  => 'más',
];

A select boxoknál gyakran az első elemnek speciális jelentése van, felhívásként szolgál. Ilyen elem hozzáadására a setPrompt() metódus szolgál.

$form->addSelect('country', 'Ország:', $countries)
	->setPrompt('Válasszon országot');

A setDisabled(['CZ', 'SK']) segítségével letilthatók az egyes elemek.

Az elem automatikusan ellenőrzi, hogy nem történt-e hamisítás, és hogy a kiválasztott elem valóban a kínáltak közül való-e, és nem volt-e letiltva. A getRawValue() metódussal lekérhető az elküldött elem e fontos ellenőrzés nélkül.

Az alapértelmezett kiválasztott elem beállításakor is ellenőrzi, hogy az a kínáltak közül való-e, különben kivételt dob. Ezt az ellenőrzést a checkDefaultValue(false) segítségével lehet kikapcsolni.

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

Hozzáad egy select boxot több elem kiválasztásához (osztály: MultiSelectBox). A kiválasztott elemek kulcsainak tömbjét adja vissza. A getSelectedItems() metódus az értékeket adja vissza a kulcsok helyett.

$form->addMultiSelect('countries', 'Országok:', $countries);

A kínált elemek tömbjét harmadik paraméterként vagy a setItems() metódussal adjuk át. Az elemek lehetnek kétdimenziós tömbök is.

A setDisabled(['CZ', 'SK']) segítségével letilthatók az egyes elemek.

Az elem automatikusan ellenőrzi, hogy nem történt-e hamisítás, és hogy a kiválasztott elemek valóban a kínáltak közül valók-e, és nem voltak-e letiltva. A getRawValue() metódussal lekérhetők az elküldött elemek e fontos ellenőrzés nélkül.

Az alapértelmezett kiválasztott elemek beállításakor is ellenőrzi, hogy azok a kínáltak közül valók-e, különben kivételt dob. Ezt az ellenőrzést a checkDefaultValue(false) segítségével lehet kikapcsolni.

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

Hozzáad egy mezőt fájl feltöltéséhez (osztály: UploadControl). Egy FileUpload objektumot ad vissza, még akkor is, ha a felhasználó nem küldött fájlt, amit a FileUpload::hasFile() metódussal lehet ellenőrizni.

$form->addUpload('avatar', 'Avatar:')
	->addRule($form::Image, 'Az avatarnak JPEG, PNG, GIF, WebP vagy AVIF formátumúnak kell lennie.')
	->addRule($form::MaxFileSize, 'A maximális méret 1 MB.', 1024 * 1024);

Ha a fájl feltöltése nem sikerül megfelelően, az űrlap nem kerül sikeresen elküldésre, és hiba jelenik meg. Vagyis sikeres elküldés esetén nem szükséges ellenőrizni a FileUpload::isOk() metódust.

Soha ne bízzon a FileUpload::getName() metódus által visszaadott eredeti fájlnévben, a kliens rosszindulatú fájlnevet küldhetett azzal a szándékkal, hogy kárt okozzon vagy feltörje az alkalmazását.

A MimeType és Image szabályok a fájl aláírása alapján észlelik a kívánt típust, és nem ellenőrzik annak integritását. Azt, hogy a kép nem sérült-e, például a betöltésének megkísérlésével lehet megállapítani.

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

Hozzáad egy mezőt több fájl egyidejű feltöltéséhez (osztály: UploadControl). FileUpload objektumok tömbjét adja vissza. A FileUpload::hasFile() metódus mindegyiknél true-t fog visszaadni.

$form->addMultiUpload('files', 'Fájlok:')
	->addRule($form::MaxLength, 'Legfeljebb %d fájlt lehet feltölteni', 10);

Ha valamelyik fájl feltöltése nem sikerül megfelelően, az űrlap nem kerül sikeresen elküldésre, és hiba jelenik meg. Vagyis sikeres elküldés esetén nem szükséges ellenőrizni a FileUpload::isOk() metódust.

Soha ne bízzon a FileUpload::getName() metódus által visszaadott eredeti fájlnevekben, a kliens rosszindulatú fájlnevet küldhetett azzal a szándékkal, hogy kárt okozzon vagy feltörje az alkalmazását.

A MimeType és Image szabályok a fájl aláírása alapján észlelik a kívánt típust, és nem ellenőrzik annak integritását. Azt, hogy a kép nem sérült-e, például a betöltésének megkísérlésével lehet megállapítani.

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

Hozzáad egy mezőt, amely lehetővé teszi a felhasználó számára, hogy könnyen megadjon egy dátumot, amely évből, hónapból és napból áll (osztály: DateTimeControl).

Alapértelmezett értékként elfogadja vagy a DateTimeInterface interfészt implementáló objektumokat, egy időt tartalmazó stringet, vagy egy UNIX timestamp-et képviselő számot. Ugyanez vonatkozik a Min, Max vagy Range szabályok argumentumaira is, amelyek meghatározzák a minimális és maximális megengedett dátumot.

$form->addDate('date', 'Dátum:')
	->setDefaultValue(new DateTime)
	->addRule($form::Min, 'A dátumnak legalább egy hónaposnak kell lennie.', new DateTime('-1 month'));

Alapértelmezés szerint DateTimeImmutable objektumot ad vissza, a setFormat() metódussal megadhatja a szöveges formátumot vagy a timestamp-et:

$form->addDate('date', 'Dátum:')
	->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 könnyen megadjon egy időt, amely órákból, percekből és opcionálisan másodpercekből áll (osztály: DateTimeControl).

Alapértelmezett értékként elfogadja vagy a DateTimeInterface interfészt implementáló objektumokat, egy időt tartalmazó stringet, vagy egy UNIX timestamp-et képviselő számot. Ezekből a bemenetekből csak az időinformáció kerül felhasználásra, a dátum figyelmen kívül marad. Ugyanez vonatkozik a Min, Max vagy Range szabályok argumentumaira is, amelyek meghatározzák a minimális és maximális megengedett időt. Ha a beállított minimális érték magasabb, mint a maximális, akkor egy éjfélen átnyúló időtartomány jön létre.

$form->addTime('time', 'Idő:', withSeconds: true)
	->addRule($form::Range, 'Az időnek %d és %d között kell lennie.', ['12:30', '13:30']);

Alapértelmezés szerint DateTimeImmutable objektumot ad vissza (az 1. év január 1-jei dátummal), a setFormat() metódussal megadhatja a szöveges formátumot:

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

addDateTime (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 könnyen megadjon egy dátumot és időt, amely évből, hónapból, napból, órákból, percekből és opcionálisan másodpercekből áll (osztály: DateTimeControl).

Alapértelmezett értékként elfogadja vagy a DateTimeInterface interfészt implementáló objektumokat, egy időt tartalmazó stringet, vagy egy UNIX timestamp-et képviselő számot. Ugyanez vonatkozik a Min, Max vagy Range szabályok argumentumaira is, amelyek meghatározzák a minimális és maximális megengedett dátumot.

$form->addDateTime('datetime', 'Dátum és idő:')
	->setDefaultValue(new DateTime)
	->addRule($form::Min, 'A dátumnak legalább egy hónaposnak kell lennie.', new DateTime('-1 month'));

Alapértelmezés szerint DateTimeImmutable objektumot ad vissza, a setFormat() metódussal megadhatja a szöveges formátumot vagy a timestamp-et:

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

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

Hozzáad egy mezőt színválasztáshoz (osztály: ColorPicker). A szín egy #rrggbb formátumú string. Ha a felhasználó nem választ, a fekete szín #000000 kerül visszaadásra.

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

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

Hozzáad egy rejtett mezőt (osztály: HiddenField).

$form->addHidden('userid');

A setNullable() segítségével beállítható, hogy null-t adjon vissza üres string helyett. Az elküldött érték módosítását az addFilter() teszi lehetővé.

Bár az elem rejtett, fontos tudatosítani, hogy az értékét egy támadó továbbra is módosíthatja vagy hamisíthatja. Mindig alaposan ellenőrizze és validálja az összes fogadott értéket a szerveroldalon, hogy megelőzze az adatmanipulációval kapcsolatos biztonsági kockázatokat.

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

Hozzáad egy küldés gombot (osztály: SubmitButton).

$form->addSubmit('submit', 'Küldés');

Az űrlapon több küldés gomb is lehet:

$form->addSubmit('register', 'Regisztráció');
$form->addSubmit('cancel', 'Mégse');

Annak megállapításához, hogy melyikre kattintottak, használja a következőt:

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

Ha nem szeretné az egész űrlapot validálni a gomb megnyomásakor (például a Mégse vagy Előnézet gomboknál), használja a setValidationScope() metódust.

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

Hozzáad egy gombot (osztály: Button), amelynek nincs küldési funkciója. Használható tehát valamilyen más funkcióra, pl. JavaScript függvény meghívására kattintáskor.

$form->addButton('raise', 'Fizetésemelés')
	->setHtmlAttribute('onclick', 'raiseSalary()');

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

Hozzáad egy kép formájú küldés gombot (osztály: ImageButton).

$form->addImageButton('submit', '/útvonal/a/képhez.png');

Több küldés gomb használatakor a $form['submit']->isSubmittedBy() segítségével megállapítható, hogy melyikre kattintottak.

addContainer (string|int $name): Container

Hozzáad egy alűrlapot (osztály: Container), vagyis egy konténert, amelybe ugyanúgy lehet további elemeket hozzáadni, mint ahogy az űrlaphoz adjuk őket. Működnek a setDefaults() vagy getValues() metódusok is.

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

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

Az elküldött adatok ezután többdimenziós struktúraként kerülnek visszaadásra:

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

Beállítások áttekintése

Minden elemnél meghívhatjuk a következő metódusokat (teljes áttekintés az API dokumentációban):

setDefaultValue($value) beállítja az alapértelmezett értéket
getValue() lekéri az aktuális értéket
setOmitted() Érték kihagyása
setDisabled() Elemek letiltása

Megjelenítés:

setCaption($caption) megváltoztatja az elem címkéjét
setTranslator($translator) beállítja a fordítót
setHtmlAttribute($name, $value) beállítja az elem HTML attribútumát
setHtmlId($id) beállítja a HTML id attribútumot
setHtmlType($type) beállítja a HTML type attribútumot
setHtmlName($name) beállítja a HTML name attribútumot
setOption($key, $value) megjelenítési beállítások

Validáció:

setRequired() kötelező elem
addRule() beállítja az érvényesítési szabályt
addCondition(), addConditionOn() beállítja az érvényesítési feltételt
addError($message) hibaüzenet átadása

Az addText(), addPassword(), addTextArea(), addEmail(), addInteger() elemeknél a következő metódusokat lehet meghívni:

setNullable() beállítja, hogy a getValue() null-t adjon-e vissza üres string helyett
setEmptyValue($value) beállít egy speciális értéket, amely üres stringnek minősül
setMaxLength($length) beállítja a megengedett karakterek maximális számát
addFilter($filter) bemenet módosítása

Érték kihagyása

Ha nem érdekel minket a felhasználó által kitöltött érték, a setOmitted() segítségével kihagyhatjuk a $form->getValues() metódus eredményéből vagy a handlereknek átadott adatokból. Ez hasznos lehet különböző ellenőrző jelszavaknál, antispam elemeknél stb.

$form->addPassword('passwordVerify', 'Jelszó újra:')
	->setRequired('Kérjük, adja meg a jelszót újra az ellenőrzéshez')
	->addRule($form::Equal, 'A jelszavak nem egyeznek', $form['password'])
	->setOmitted();

Elemek letiltása

Az elemeket a setDisabled() segítségével lehet letiltani. Egy ilyen elemet a felhasználó nem tud szerkeszteni.

$form->addText('username', 'Felhasználónév:')
	->setDisabled();

A letiltott elemeket a böngésző egyáltalán nem küldi el a szerverre, tehát nem is találja meg őket a $form->getValues() függvény által visszaadott adatokban. Ha azonban beállítja a setOmitted(false) értéket, a Nette ezekbe az adatokba belefoglalja az alapértelmezett értéküket.

A setDisabled() hívásakor biztonsági okokból törlődik az elem értéke. Ha alapértelmezett értéket állít be, azt a letiltás után kell megtenni:

$form->addText('username', 'Felhasználónév:')
	->setDisabled()
	->setDefaultValue($userName);

A letiltott elemek alternatívája a readonly HTML attribútummal rendelkező elemek, amelyeket a böngésző elküld a szerverre. Bár az elem csak olvasható, fontos tudatosítani, hogy az értékét egy támadó továbbra is módosíthatja vagy hamisíthatja.

Egyéni elemek

A beépített űrlap elemek széles skálája mellett egyéni elemeket is hozzáadhat az űrlaphoz a következő módon:

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

Az űrlap a Container osztály leszármazottja, az egyes elemek pedig a Component leszármazottai.

Létezik egy módszer új űrlap metódusok definiálására, amelyek egyéni elemek hozzáadására szolgálnak (pl. $form->addZip()). Ezek az ún. extension methods. Hátrányuk, hogy a szerkesztőkben nem fog működni rájuk a kódkiegészítés.

use Nette\Forms\Container;

// hozzáadjuk az addZip(string $name, ?string $label = null) metódust
Container::extensionMethod('addZip', function (Container $form, string $name, ?string $label = null) {
	return $form->addText($name, $label)
		->addRule($form::Pattern, 'Legalább 5 számjegy', '[0-9]{5}');
});

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

Alacsony szintű elemek

Használhatunk olyan elemeket is, amelyeket csak a sablonban írunk le, és nem adjuk hozzá az űrlaphoz valamelyik $form->addXyz() metódussal. Ha például adatbázisból listázunk rekordokat, és előre nem tudjuk, hány lesz belőlük és milyen ID-jük lesz, és minden sornál szeretnénk egy checkboxot vagy radio buttont megjeleníteni, elég azt a sablonban kódolni:

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

És elküldés után lekérjük az értéket:

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

ahol az első paraméter az elem típusa (DataFile a type=file-hoz, DataLine az egysoros bemenetekhez, mint text, password, email stb., és DataText az összes többihez), a második paraméter sel[] pedig a HTML name attribútumnak felel meg. Az elem típusát kombinálhatjuk a DataKeys értékkel, amely megőrzi az elemek kulcsait. Ez különösen hasznos a select, radioList és checkboxList esetén.

Lényeges, hogy a getHttpData() szanitizált értéket ad vissza, ebben az esetben ez mindig érvényes UTF-8 stringek tömbje lesz, függetlenül attól, hogy a támadó mit próbált a szervernek becsempészni. Ez hasonló a közvetlen $_POST vagy $_GET kezeléséhez, azzal a lényeges különbséggel, hogy mindig tiszta adatokat ad vissza, ahogy azt a standard Nette űrlap elemeknél megszokhattuk.

verzió: 4.0