アップグレード

バージョン 3.3 へのアップグレード

  • 自動の CSRF 対策は isSameSite() から isFrom(FetchSite::SameOrigin) に切り替わり、より厳しくなりました。サブドメインから来るリクエストはもう通りません
  • おかげで addProtection() はもう要りません。自動の対策が同じ場面を覆うからです。新しいフォームでは書かず、既存のフォームからは遠慮なく取り除いてください

セッションのトークンがもう要らない理由は、記事 CSRF の四半世紀で説明されています。

バージョン 3.1 へのアップグレード

  • getValues() は検証を通った要素だけを返します。検証に関わらずすべての要素の値が必要なら、新しいメソッド getUntrustedValues() を使ってください
  • onSuccessonClick のハンドラに渡される $values も同じく、検証を通った要素だけを持ちます
  • 単独で使うフォームは、SameSite フラグの付いたクッキーで CSRF から自動的に守られます。別のオリジンからの送信を許すには allowCrossOrigin() を使います
  • Form::URL の規則は、足りないプロトコルを http ではなく https で補うようになりました
  • Form::addImage()addImageButton() に改名されました
  • Checkbox::getSeparatorPrototype()getContainerPrototype() に改名されました
  • フォームはテンプレートに $_form 変数を作らなくなりました

これらの変更について詳しくは、記事 Nette Forms 3.1 の新機能をご覧ください。

バージョン 3.0 へのアップグレード

  • すべてのフォームの要素は既定で省略できるようになったので(この変更は Nette 2.4 で入りました)、setRequired(false) は取り除けます
  • netteForms.js は必ずバージョン 3 に更新してください(npm install nette-forms
  • ChoiceControl::$checkAllowedValuesMultiChoiceControl::$checkAllowedValuescheckDefaultValue() メソッドに置き換わりました

バージョン 2.4 へのアップグレード

  • 要素に addRule() で規則が付いている(つまり実質的に必須である)なら、setRequired() でも必須と印を付けなければなりません。また setRequired(false) はその要素を省略できるようにするので、addCondition($form::FILLED) の分岐の代わりになります
  • Form::EMAILURLINTEGER の検証器は、HTML の type 属性をそれぞれ emailurlnumber に自動的に変えます
  • 否定の検証の規則は非推奨です。~Form::FILLED の代わりは Form::BLANK で、~Form::EQUALForm::NOT_EQUAL に置き換えられます
  • 内部のパラメータ do は、衝突を避けるために POST で _do として送られるようになりました
  • $_form のようなアンダースコアで始まる内部の変数は非推奨です
  • netteForms.js の更新をお忘れなく

バージョン 2.3 へのアップグレード

  • Nette\Forms\Controls\TextBase::filterFloat のような内部のフィルタのメソッドは取り除かれました
  • TextBase::validateFloat のような内部の検証のメソッドは Nette\Forms\Validator へ移りました。Rules::$defaultMessages も同じです
  • ボタンと Hidden の項目は HTML の ID なしで生成されます。ID が欲しいなら setHtmlId() で設定してください
  • RadioList の項目も ID なしで生成されます。$radioList->generateId = true で有効にできます
  • TextBase::addFilter() で足したフィルタは検証のときに処理され、条件にもフィルタを足せるようになりました。$input->addCondition(...)->addFilter(...) のようにです
バージョン: 4.x