Nette Documentation Preview

syntax
Upgrade
*******


Upgrade auf Version 3.3
=======================

- der automatische Schutz vor CSRF ist von `isSameSite()` auf `isFrom(FetchSite::SameOrigin)` umgestiegen und strenger geworden: Requests von Subdomains kommen nicht mehr durch
- dadurch ist `addProtection()` nicht mehr nötig, denn der automatische Schutz deckt dieselben Fälle ab; lassen Sie es in neuen Formularen weg und entfernen Sie es ruhig aus den bestehenden

Warum Tokens in der Session nicht mehr nötig sind, erklärt der Artikel [Quarter Century of CSRF |https://blog.nette.org/en/quarter-century-of-csrf].


Upgrade auf Version 3.1
=======================

- `getValues()` gibt nur die validierten Elemente zurück; wenn Sie die Werte aller Elemente unabhängig von der Validierung brauchen, verwenden Sie die neue Methode `getUntrustedValues()`
- die `$values`, die den Handlern `onSuccess` und `onClick` übergeben werden, enthalten ebenfalls nur die validierten Elemente
- eigenständige Formulare sind über ein Cookie mit dem Flag SameSite automatisch vor CSRF geschützt; das Absenden von einem anderen Origin erlauben Sie über `allowCrossOrigin()`
- die Regel `Form::URL` ergänzt ein fehlendes Protokoll jetzt mit `https` statt mit `http`
- `Form::addImage()` wurde in `addImageButton()` umbenannt
- `Checkbox::getSeparatorPrototype()` wurde in `getContainerPrototype()` umbenannt
- Formulare erzeugen in Templates nicht mehr die Variable `$_form`

Mehr zu diesen Änderungen im Artikel [News in Nette Forms 3.1 |https://blog.nette.org/en/news-in-nette-forms-3-1].


Upgrade auf Version 3.0
=======================

- alle Formularelemente sind jetzt standardmäßig optional (diese Änderung kam in Nette 2.4), Sie können `setRequired(false)` also entfernen
- aktualisieren Sie unbedingt `netteForms.js` auf Version 3 (`npm install nette-forms`)
- `ChoiceControl::$checkAllowedValues` und `MultiChoiceControl::$checkAllowedValues` wurden durch die Methode `checkDefaultValue()` ersetzt


Upgrade auf Version 2.4
=======================

- hat ein Element eine Regel über `addRule()` (ist es also faktisch ein Pflichtfeld), müssen Sie es auch über `setRequired()` als Pflichtfeld kennzeichnen; außerdem macht `setRequired(false)` das Element jetzt optional, was die Zweige `addCondition($form::FILLED)` ersetzt
- die Validatoren `Form::EMAIL`, `URL` und `INTEGER` ändern das HTML-Attribut `type` automatisch auf `email`, `url` bzw. `number`
- negative Validierungsregeln sind veraltet; die Alternative zu `~Form::FILLED` ist `Form::BLANK`, und `~Form::EQUAL` lässt sich durch `Form::NOT_EQUAL` ersetzen
- der interne Parameter `do` wird jetzt per POST als `_do` gesendet, um eine Kollision zu vermeiden
- die internen Variablen mit Unterstrich wie `$_form` sind veraltet
- denken Sie daran, `netteForms.js` zu aktualisieren


Upgrade auf Version 2.3
=======================

- die internen Methoden zum Filtern wie `Nette\Forms\Controls\TextBase::filterFloat` wurden entfernt
- die internen Methoden zur Validierung wie `TextBase::validateFloat` sind nach `Nette\Forms\Validator` umgezogen, ebenso `Rules::$defaultMessages`
- Buttons und versteckte Felder werden ohne HTML-ID erzeugt; wenn Sie eine ID wollen, setzen Sie sie über `setHtmlId()`
- auch die Elemente von RadioList werden ohne ID erzeugt; einschalten lässt sie sich über `$radioList->generateId = true`
- Filter, die über `TextBase::addFilter()` hinzugefügt werden, werden während der Validierung verarbeitet, und Sie können Filter jetzt zu Bedingungen hinzufügen: `$input->addCondition(...)->addFilter(...)`

Upgrade

Upgrade auf Version 3.3

  • der automatische Schutz vor CSRF ist von isSameSite() auf isFrom(FetchSite::SameOrigin) umgestiegen und strenger geworden: Requests von Subdomains kommen nicht mehr durch
  • dadurch ist addProtection() nicht mehr nötig, denn der automatische Schutz deckt dieselben Fälle ab; lassen Sie es in neuen Formularen weg und entfernen Sie es ruhig aus den bestehenden

Warum Tokens in der Session nicht mehr nötig sind, erklärt der Artikel Quarter Century of CSRF.

Upgrade auf Version 3.1

  • getValues() gibt nur die validierten Elemente zurück; wenn Sie die Werte aller Elemente unabhängig von der Validierung brauchen, verwenden Sie die neue Methode getUntrustedValues()
  • die $values, die den Handlern onSuccess und onClick übergeben werden, enthalten ebenfalls nur die validierten Elemente
  • eigenständige Formulare sind über ein Cookie mit dem Flag SameSite automatisch vor CSRF geschützt; das Absenden von einem anderen Origin erlauben Sie über allowCrossOrigin()
  • die Regel Form::URL ergänzt ein fehlendes Protokoll jetzt mit https statt mit http
  • Form::addImage() wurde in addImageButton() umbenannt
  • Checkbox::getSeparatorPrototype() wurde in getContainerPrototype() umbenannt
  • Formulare erzeugen in Templates nicht mehr die Variable $_form

Mehr zu diesen Änderungen im Artikel News in Nette Forms 3.1.

Upgrade auf Version 3.0

  • alle Formularelemente sind jetzt standardmäßig optional (diese Änderung kam in Nette 2.4), Sie können setRequired(false) also entfernen
  • aktualisieren Sie unbedingt netteForms.js auf Version 3 (npm install nette-forms)
  • ChoiceControl::$checkAllowedValues und MultiChoiceControl::$checkAllowedValues wurden durch die Methode checkDefaultValue() ersetzt

Upgrade auf Version 2.4

  • hat ein Element eine Regel über addRule() (ist es also faktisch ein Pflichtfeld), müssen Sie es auch über setRequired() als Pflichtfeld kennzeichnen; außerdem macht setRequired(false) das Element jetzt optional, was die Zweige addCondition($form::FILLED) ersetzt
  • die Validatoren Form::EMAIL, URL und INTEGER ändern das HTML-Attribut type automatisch auf email, url bzw. number
  • negative Validierungsregeln sind veraltet; die Alternative zu ~Form::FILLED ist Form::BLANK, und ~Form::EQUAL lässt sich durch Form::NOT_EQUAL ersetzen
  • der interne Parameter do wird jetzt per POST als _do gesendet, um eine Kollision zu vermeiden
  • die internen Variablen mit Unterstrich wie $_form sind veraltet
  • denken Sie daran, netteForms.js zu aktualisieren

Upgrade auf Version 2.3

  • die internen Methoden zum Filtern wie Nette\Forms\Controls\TextBase::filterFloat wurden entfernt
  • die internen Methoden zur Validierung wie TextBase::validateFloat sind nach Nette\Forms\Validator umgezogen, ebenso Rules::$defaultMessages
  • Buttons und versteckte Felder werden ohne HTML-ID erzeugt; wenn Sie eine ID wollen, setzen Sie sie über setHtmlId()
  • auch die Elemente von RadioList werden ohne ID erzeugt; einschalten lässt sie sich über $radioList->generateId = true
  • Filter, die über TextBase::addFilter() hinzugefügt werden, werden während der Validierung verarbeitet, und Sie können Filter jetzt zu Bedingungen hinzufügen: $input->addCondition(...)->addFilter(...)