Nette Documentation Preview

syntax
アップグレード
*******


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

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

セッションのトークンがもう要らない理由は、記事 [CSRF の四半世紀 |https://blog.nette.org/en/quarter-century-of-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 の新機能 |https://blog.nette.org/en/news-in-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(...)` のようにです

アップグレード

バージョン 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(...) のようにです