アップグレード
バージョン 3.3 へのアップグレード
- 自動の CSRF 対策は
isSameSite()からisFrom(FetchSite::SameOrigin)に切り替わり、より厳しくなりました。サブドメインから来るリクエストはもう通りません - おかげで
addProtection()はもう要りません。自動の対策が同じ場面を覆うからです。新しいフォームでは書かず、既存のフォームからは遠慮なく取り除いてください
セッションのトークンがもう要らない理由は、記事 CSRF の四半世紀で説明されています。
バージョン 3.1 へのアップグレード
getValues()は検証を通った要素だけを返します。検証に関わらずすべての要素の値が必要なら、新しいメソッドgetUntrustedValues()を使ってくださいonSuccessとonClickのハンドラに渡される$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::$checkAllowedValuesとMultiChoiceControl::$checkAllowedValuesはcheckDefaultValue()メソッドに置き換わりました
バージョン 2.4 へのアップグレード
- 要素に
addRule()で規則が付いている(つまり実質的に必須である)なら、setRequired()でも必須と印を付けなければなりません。またsetRequired(false)はその要素を省略できるようにするので、addCondition($form::FILLED)の分岐の代わりになります Form::EMAIL、URL、INTEGERの検証器は、HTML のtype属性をそれぞれemail、url、numberに自動的に変えます- 否定の検証の規則は非推奨です。
~Form::FILLEDの代わりはForm::BLANKで、~Form::EQUALはForm::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(...)のようにです