Nette Documentation Preview

syntax
Aktualizacja
************


Aktualizacja do wersji 3.3
==========================

- automatyczna ochrona przed CSRF przeszła z `isSameSite()` na `isFrom(FetchSite::SameOrigin)` i stała się surowsza: żądania przychodzące z subdomen już nie przechodzą
- dzięki temu `addProtection()` nie jest już potrzebne, bo automatyczna ochrona pokrywa te same przypadki; w nowych formularzach je pomiń, a z istniejących śmiało usuń

Dlaczego tokeny w sesji nie są już potrzebne, wyjaśnia artykuł [Ćwierć wieku CSRF |https://blog.nette.org/en/quarter-century-of-csrf].


Aktualizacja do wersji 3.1
==========================

- `getValues()` zwraca tylko zwalidowane elementy; jeśli potrzebujesz wartości wszystkich elementów niezależnie od walidacji, użyj nowej metody `getUntrustedValues()`
- `$values` przekazywane do handlerów `onSuccess` i `onClick` zawierają tak samo tylko zwalidowane elementy
- samodzielne formularze są automatycznie chronione przed CSRF za pomocą cookie z flagą SameSite; wysyłanie z innego origin możesz dopuścić metodą `allowCrossOrigin()`
- reguła `Form::URL` uzupełnia teraz brakujący protokół jako `https` zamiast `http`
- `Form::addImage()` zostało przemianowane na `addImageButton()`
- `Checkbox::getSeparatorPrototype()` zostało przemianowane na `getContainerPrototype()`
- formularze nie tworzą już w szablonach zmiennej `$_form`

Więcej o tych zmianach w artykule [Nowości w Nette Forms 3.1 |https://blog.nette.org/en/news-in-nette-forms-3-1].


Aktualizacja do wersji 3.0
==========================

- wszystkie elementy formularza są teraz domyślnie opcjonalne (ta zmiana pojawiła się w Nette 2.4), więc `setRequired(false)` możesz usunąć
- koniecznie zaktualizuj `netteForms.js` do wersji 3 (`npm install nette-forms`)
- `ChoiceControl::$checkAllowedValues` i `MultiChoiceControl::$checkAllowedValues` zostały zastąpione metodą `checkDefaultValue()`


Aktualizacja do wersji 2.4
==========================

- jeśli element ma regułę dodaną przez `addRule()` (czyli jest faktycznie obowiązkowy), musisz oznaczyć go jako obowiązkowy także przez `setRequired()`; poza tym `setRequired(false)` czyni teraz element opcjonalnym, co zastępuje gałęzie `addCondition($form::FILLED)`
- walidatory `Form::EMAIL`, `URL` i `INTEGER` automatycznie zmieniają atrybut HTML `type` odpowiednio na `email`, `url` i `number`
- negatywne reguły walidacyjne są przestarzałe; alternatywą dla `~Form::FILLED` jest `Form::BLANK`, a `~Form::EQUAL` możesz zastąpić przez `Form::NOT_EQUAL`
- wewnętrzny parametr `do` jest teraz wysyłany metodą POST jako `_do`, żeby uniknąć kolizji
- wewnętrzne zmienne z podkreśleniem, takie jak `$_form`, są przestarzałe
- pamiętaj o aktualizacji `netteForms.js`


Aktualizacja do wersji 2.3
==========================

- wewnętrzne metody filtrujące, takie jak `Nette\Forms\Controls\TextBase::filterFloat`, zostały usunięte
- wewnętrzne metody walidacyjne, takie jak `TextBase::validateFloat`, zostały przeniesione do `Nette\Forms\Validator`, podobnie jak `Rules::$defaultMessages`
- Buttony i pola Hidden są generowane bez HTML-owego ID; jeśli chcesz ID, ustaw je metodą `setHtmlId()`
- pozycje RadioList są również generowane bez ID; możesz je włączyć przez `$radioList->generateId = true`
- filtry dodane przez `TextBase::addFilter()` są przetwarzane podczas walidacji, a filtry możesz teraz dodawać do warunków: `$input->addCondition(...)->addFilter(...)`

Aktualizacja

Aktualizacja do wersji 3.3

  • automatyczna ochrona przed CSRF przeszła z isSameSite() na isFrom(FetchSite::SameOrigin) i stała się surowsza: żądania przychodzące z subdomen już nie przechodzą
  • dzięki temu addProtection() nie jest już potrzebne, bo automatyczna ochrona pokrywa te same przypadki; w nowych formularzach je pomiń, a z istniejących śmiało usuń

Dlaczego tokeny w sesji nie są już potrzebne, wyjaśnia artykuł Ćwierć wieku CSRF.

Aktualizacja do wersji 3.1

  • getValues() zwraca tylko zwalidowane elementy; jeśli potrzebujesz wartości wszystkich elementów niezależnie od walidacji, użyj nowej metody getUntrustedValues()
  • $values przekazywane do handlerów onSuccess i onClick zawierają tak samo tylko zwalidowane elementy
  • samodzielne formularze są automatycznie chronione przed CSRF za pomocą cookie z flagą SameSite; wysyłanie z innego origin możesz dopuścić metodą allowCrossOrigin()
  • reguła Form::URL uzupełnia teraz brakujący protokół jako https zamiast http
  • Form::addImage() zostało przemianowane na addImageButton()
  • Checkbox::getSeparatorPrototype() zostało przemianowane na getContainerPrototype()
  • formularze nie tworzą już w szablonach zmiennej $_form

Więcej o tych zmianach w artykule Nowości w Nette Forms 3.1.

Aktualizacja do wersji 3.0

  • wszystkie elementy formularza są teraz domyślnie opcjonalne (ta zmiana pojawiła się w Nette 2.4), więc setRequired(false) możesz usunąć
  • koniecznie zaktualizuj netteForms.js do wersji 3 (npm install nette-forms)
  • ChoiceControl::$checkAllowedValues i MultiChoiceControl::$checkAllowedValues zostały zastąpione metodą checkDefaultValue()

Aktualizacja do wersji 2.4

  • jeśli element ma regułę dodaną przez addRule() (czyli jest faktycznie obowiązkowy), musisz oznaczyć go jako obowiązkowy także przez setRequired(); poza tym setRequired(false) czyni teraz element opcjonalnym, co zastępuje gałęzie addCondition($form::FILLED)
  • walidatory Form::EMAIL, URL i INTEGER automatycznie zmieniają atrybut HTML type odpowiednio na email, urlnumber
  • negatywne reguły walidacyjne są przestarzałe; alternatywą dla ~Form::FILLED jest Form::BLANK, a ~Form::EQUAL możesz zastąpić przez Form::NOT_EQUAL
  • wewnętrzny parametr do jest teraz wysyłany metodą POST jako _do, żeby uniknąć kolizji
  • wewnętrzne zmienne z podkreśleniem, takie jak $_form, są przestarzałe
  • pamiętaj o aktualizacji netteForms.js

Aktualizacja do wersji 2.3

  • wewnętrzne metody filtrujące, takie jak Nette\Forms\Controls\TextBase::filterFloat, zostały usunięte
  • wewnętrzne metody walidacyjne, takie jak TextBase::validateFloat, zostały przeniesione do Nette\Forms\Validator, podobnie jak Rules::$defaultMessages
  • Buttony i pola Hidden są generowane bez HTML-owego ID; jeśli chcesz ID, ustaw je metodą setHtmlId()
  • pozycje RadioList są również generowane bez ID; możesz je włączyć przez $radioList->generateId = true
  • filtry dodane przez TextBase::addFilter() są przetwarzane podczas walidacji, a filtry możesz teraz dodawać do warunków: $input->addCondition(...)->addFilter(...)