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

  • 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 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.

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(...)