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()`
- `$values`, передаваемые в обработчики `onSuccess` и `onClick`, точно так же содержат только проверенные элементы
- самостоятельные формы автоматически защищены от CSRF с помощью cookie с флагом SameSite; отправку с другого источника можно разрешить через `allowCrossOrigin()`
- правило `Form::URL` теперь дополняет отсутствующий протокол значением `https` вместо `http`
- `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`
- кнопки и скрытые поля порождаются без HTML-идентификатора; если вам нужен 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()
  • $values, передаваемые в обработчики onSuccess и onClick, точно так же содержат только проверенные элементы
  • самостоятельные формы автоматически защищены от CSRF с помощью cookie с флагом SameSite; отправку с другого источника можно разрешить через allowCrossOrigin()
  • правило Form::URL теперь дополняет отсутствующий протокол значением https вместо http
  • 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
  • кнопки и скрытые поля порождаются без HTML-идентификатора; если вам нужен ID, задайте его через setHtmlId()
  • элементы RadioList тоже порождаются без ID; включить его можно через $radioList->generateId = true
  • фильтры, добавленные через TextBase::addFilter(), обрабатываются во время проверки, и теперь фильтры можно добавлять к условиям: $input->addCondition(...)->addFilter(...)