Nette Documentation Preview

syntax
Mise à niveau
*************


Mise à niveau vers la version 3.3
=================================

- la protection automatique contre le CSRF est passée de `isSameSite()` à `isFrom(FetchSite::SameOrigin)` et est devenue plus stricte : les requêtes provenant de sous-domaines ne passent plus
- de ce fait, `addProtection()` n'est plus nécessaire, car la protection automatique couvre les mêmes cas ; ne l'utilisez pas dans les nouveaux formulaires et n'hésitez pas à le retirer des formulaires existants

L'article [Quarter Century of CSRF |https://blog.nette.org/en/quarter-century-of-csrf] explique pourquoi les tokens en session ne sont plus nécessaires.


Mise à niveau vers la version 3.1
=================================

- `getValues()` ne renvoie que les champs validés ; si vous avez besoin des valeurs de tous les champs indépendamment de la validation, utilisez la nouvelle méthode `getUntrustedValues()`
- les `$values` passées aux gestionnaires `onSuccess` et `onClick` ne contiennent elles aussi que les champs validés
- les formulaires autonomes sont automatiquement protégés contre le CSRF par un cookie portant le drapeau SameSite ; vous pouvez autoriser la soumission depuis une autre origine avec `allowCrossOrigin()`
- la règle `Form::URL` complète désormais un protocole manquant par `https` au lieu de `http`
- `Form::addImage()` a été renommée en `addImageButton()`
- `Checkbox::getSeparatorPrototype()` a été renommée en `getContainerPrototype()`
- les formulaires ne créent plus la variable `$_form` dans les templates

Plus d'informations sur ces changements dans l'article [News in Nette Forms 3.1 |https://blog.nette.org/en/news-in-nette-forms-3-1].


Mise à niveau vers la version 3.0
=================================

- tous les champs de formulaire sont désormais facultatifs par défaut (ce changement a été introduit dans Nette 2.4), vous pouvez donc supprimer `setRequired(false)`
- pensez à mettre à jour `netteForms.js` vers la version 3 (`npm install nette-forms`)
- `ChoiceControl::$checkAllowedValues` et `MultiChoiceControl::$checkAllowedValues` ont été remplacés par la méthode `checkDefaultValue()`


Mise à niveau vers la version 2.4
=================================

- si un champ possède une règle via `addRule()` (autrement dit s'il est de fait obligatoire), vous devez aussi le marquer comme obligatoire via `setRequired()` ; par ailleurs, `setRequired(false)` rend désormais le champ facultatif, ce qui remplace les branches `addCondition($form::FILLED)`
- les validateurs `Form::EMAIL`, `URL` et `INTEGER` changent automatiquement l'attribut HTML `type` en `email`, `url` et `number` respectivement
- les règles de validation négatives sont obsolètes ; l'équivalent de `~Form::FILLED` est `Form::BLANK`, et `~Form::EQUAL` peut être remplacé par `Form::NOT_EQUAL`
- le paramètre interne `do` est désormais envoyé en POST sous le nom `_do` afin d'éviter une collision
- les variables internes commençant par un tiret bas, comme `$_form`, sont obsolètes
- pensez à mettre à jour `netteForms.js`


Mise à niveau vers la version 2.3
=================================

- les méthodes internes de filtrage comme `Nette\Forms\Controls\TextBase::filterFloat` ont été supprimées
- les méthodes internes de validation comme `TextBase::validateFloat` ont été déplacées vers `Nette\Forms\Validator`, tout comme `Rules::$defaultMessages`
- les boutons et les champs Hidden sont générés sans ID HTML ; si vous voulez un ID, définissez-le via `setHtmlId()`
- les éléments RadioList sont eux aussi générés sans ID ; vous pouvez l'activer via `$radioList->generateId = true`
- les filtres ajoutés via `TextBase::addFilter()` sont traités pendant la validation, et vous pouvez désormais ajouter des filtres aux conditions : `$input->addCondition(...)->addFilter(...)`

Mise à niveau

Mise à niveau vers la version 3.3

L'article Quarter Century of CSRF explique pourquoi les tokens en session ne sont plus nécessaires.

Mise à niveau vers la version 3.1

Plus d'informations sur ces changements dans l'article News in Nette Forms 3.1.

Mise à niveau vers la version 3.0

Mise à niveau vers la version 2.4

Mise à niveau vers la version 2.3