Nette Documentation Preview

syntax
Upgrade
*******


Upgrade na verzi 3.3
====================

- automatická ochrana proti CSRF přešla z `isSameSite()` na `isFrom(FetchSite::SameOrigin)` a je přísnější: požadavky přicházející ze subdomén už neprojdou
- díky tomu už není potřeba `addProtection()`, protože automatická ochrana kryje totéž; u nových formulářů ji vynechte a ze stávajících ji můžete smazat

Proč už tokeny v session nejsou potřeba, vysvětluje článek [Čtvrt století s CSRF |https://blog.nette.org/cs/csrf-konecne-resi-prohlizec].


Upgrade na verzi 3.1
====================

- `getValues()` vrací jen validované prvky; pokud potřebujete hodnoty všech prvků nezávisle na validaci, použijte novou metodu `getUntrustedValues()`
- pole `$values` předávané handlerům `onSuccess` a `onClick` rovněž obsahuje jen validované prvky
- samostatně používané formuláře jsou automaticky chráněny proti CSRF pomocí cookie s příznakem SameSite; odeslání z jiné domény povolíte metodou `allowCrossOrigin()`
- pravidlo `Form::URL` nyní doplňuje chybějící protokol `https` místo `http`
- `Form::addImage()` bylo přejmenováno na `addImageButton()`
- `Checkbox::getSeparatorPrototype()` bylo přejmenováno na `getContainerPrototype()`
- formuláře již nevytvářejí v šabloně proměnnou `$_form`

Více o těchto změnách v článku [Novinky v Nette Forms 3.1 |https://blog.nette.org/cs/novinky-v-nette-forms-3-1].


Upgrade na verzi 3.0
====================

- všechny formulářové prvky jsou nyní ve výchozím nastavení volitelné (tato změna byla zavedena v Nette 2.4), takže můžete odstranit `setRequired(false)`
- nezapomeňte aktualizovat soubor `netteForms.js` na verzi 3 (`npm install nette-forms`)
- proměnné `ChoiceControl::$checkAllowedValues` a `MultiChoiceControl::$checkAllowedValues` byly nahrazeny metodou `checkDefaultValue()`


Upgrade na verzi 2.4
====================

- pokud má prvek nastaveno pravidlo přes `addRule()` (tedy je efektivně povinný), musíte jej také označit jako povinný pomocí `setRequired()`; dále `setRequired(false)` nyní udělá prvek volitelný, čímž lze nahradit větve `addCondition($form::FILLED)`
- validátory `Form::EMAIL`, `URL` a `INTEGER` automaticky mění HTML atribut `type` na `email`, `url`, resp. `number`
- negativní validační pravidla jsou zastaralá; alternativou `~Form::FILLED` je `Form::BLANK` a `~Form::EQUAL` lze nahradit za `Form::NOT_EQUAL`
- interní parametr `do` se nyní u formulářů posílaných přes POST jmenuje `_do`, aby nedocházelo ke kolizi
- interní podtržítkové proměnné jako `$_form` jsou zastaralé
- nezapomeňte aktualizovat `netteForms.js`


Upgrade na verzi 2.3
====================

- interní filtrovací metody jako `Nette\Forms\Controls\TextBase::filterFloat` byly odstraněny
- interní validační metody jako `TextBase::validateFloat` byly přesunuty do `Nette\Forms\Validator`, stejně jako `Rules::$defaultMessages`
- tlačítka a skrytá pole se generují bez HTML ID; pokud ID chcete, nastavte ho přes `setHtmlId()`
- položky RadioListu se rovněž generují bez ID; můžete ho zapnout přes `$radioList->generateId = true`
- filtry přidané přes `TextBase::addFilter()` se zpracovávají během validace a filtry nyní můžete přidávat i k podmínkám: `$input->addCondition(...)->addFilter(...)`

{{maintitle: Upgrade Nette Forms: změny v jednotlivých verzích}}
{{description: Co se změnilo v Nette Forms 3.3, 3.1, 3.0, 2.4 a 2.3 a jak upravit kód, aby přechod na novější verzi proběhl hladce.}}

Upgrade

Upgrade na verzi 3.3

Proč už tokeny v session nejsou potřeba, vysvětluje článek Čtvrt století s CSRF.

Upgrade na verzi 3.1

Více o těchto změnách v článku Novinky v Nette Forms 3.1.

Upgrade na verzi 3.0

Upgrade na verzi 2.4

Upgrade na verzi 2.3