Nefunkční Form::addProtection() po upgradu na Nette 3
- Melebius
- Člen | 16
Pokouším se upgradovat starší projekt na Nette 3 a zastavil jsem se na
chybě, která se, aspoň podle vyhledávání na internetu, zatím asi nikomu
nestala… 🙂 Při pokusu o načtení stránky s formulářem, který
obsahuje volání $form->addProtection();
se mi ukáže
výjimka:
TypeError
Argument 3 passed to Nette\Forms\Container::addComponent() must be of the type string or null, int given, called in …/web-app/vendor/nette/forms/src/Forms/Form.php on line 242
Nevidím, jak bych to mohl ovlivnit ze svého kódu – do funkce
Form::addProtection()
, do níž spadá uvedený řádek 242,
žádný argument nepředávám. Zkusil jsem volání
addProtection()
zakomentovat a stránka se načetla správně.
Dále jsem zkusil odhlásit se z aplikace a znovu se přihlásit (jestli se
s Nette 3 třeba nezměnil obsah cookie…), ale stále se ukazuje chyba.
Mohl by mě prosím někdo nasměrovat, co s tím?
Případně poradit, zda je stále doporučené addProtection()
používat? Nacházím k tomu rozporuplné informace (např. https://forum.nette.org/…to-vynutenej#…
nebo https://doc.nette.org/…y-protection#…
vs. https://doc.nette.org/…in-presenter#…).
Můj formulář je v presenteru a jedná se o „administrační část
webu“, resp. je to interní aplikace pro práci s důležitými daty.
- kudlav
- Člen | 1
Narazil jsem na stejnou chybu. Problém nastal jen v jednom konrétním formuláři. Pomohlo dát příkaz hned na začátek za instanciaci formuláře:
$form = new Form();
$form->addProtection();
$form->addText(...
...
Když jsem měl addProtection až za vytářením komponent, došlo k chybě.
TypeError
Argument 3 passed to Nette\Forms\Container::addComponent() must be of the type string or null, int given, called in …/vendor/nette/forms/src/Forms/Form.php on line 223