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(...)
version: 4.x