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éthodegetUntrustedValues()- les
$valuespassées aux gestionnairesonSuccessetonClickne 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::URLcomplète désormais un protocole manquant parhttpsau lieu dehttp Form::addImage()a été renommée enaddImageButton()Checkbox::getSeparatorPrototype()a été renommée engetContainerPrototype()- les formulaires ne créent plus la variable
$_formdans 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.jsvers la version 3 (npm install nette-forms) ChoiceControl::$checkAllowedValuesetMultiChoiceControl::$checkAllowedValuesont été remplacés par la méthodecheckDefaultValue()
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 viasetRequired(); par ailleurs,setRequired(false)rend désormais le champ facultatif, ce qui remplace les branchesaddCondition($form::FILLED) - les validateurs
Form::EMAIL,URLetINTEGERchangent automatiquement l'attribut HTMLtypeenemail,urletnumberrespectivement - les règles de validation négatives sont obsolètes ; l'équivalent de
~Form::FILLEDestForm::BLANK, et~Form::EQUALpeut être remplacé parForm::NOT_EQUAL - le paramètre interne
doest désormais envoyé en POST sous le nom_doafin 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::filterFloatont été supprimées - les méthodes internes de validation comme
TextBase::validateFloatont été déplacées versNette\Forms\Validator, tout commeRules::$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(...)