ArgumentCountError ve Form::getUnsafeValues()

m.brecher
Generous Backer | 263
+
0
-

Ahoj,

narazil jsem na ladění na takovýto problém:

Potřebuji si vytrasovat jak to vypadá s hodnotou null sloupce databázové tabulky a tak čistě z testovacích důvodů se potřebuji podívat jaká data jsou po inicializaci $form->setDefaults($data) ve formuláři – konkrétně co se stane s hodnotou null (ještě před submitem formuláře)

Metoda Form::getValues() nevrací reálná data, ale pouze validní, tu použít nelze. Na internetu jsem zahlédl nějaké poznámky od @DavidGrudl, že implementuje na podněty od uživatelů Nette metodu Form::getUnsafeValues(), která by dodala všechny data tak jak jsou, byť to není bezpečné.

Zkusil jsem hledat něco o této metodě v dokumentaci, ale nic nenašel. Zkusil jsem tedy $form->getUnsafeValues(), a obdržel chybovou hlášku:

ArgumentCountError

Too few arguments to function Nette\Forms\Container::getUnsafeValues(), 0 passed in
C:\www\cli\project\app\Admin\Presenters\TranslationPresenter.php on line 44 and at least 1 expected

Z chybové hlášky usuzuji, že metoda Form::getValues() existuje, ale má nějaké povinné parametry. Bohužel jsem nebyl schopen k této metodě nic vysurfovat a tak prosím o nějaké informace od kolegů, kteří něco vědí.

Díky

Editoval m.brecher (10. 9. 17:29)

m.brecher
Generous Backer | 263
+
0
-

Ještě doplním, že fulltext hledáním v adresáři C:\www\cli\project\vendor\nette\forms jsem nalezl zmínku o metodě getUnsafeValues():

'You cannot call getValues() during the validation process. Use getUnsafeValues() instead.'

Což potvrzuje můj pocit, že metoda existuje :).

Marek Bartoš
Nette Blogger | 824
+
0
-

Stejně jako getValues(), getUnsafeValues('array')
Parametr určuje return type

m.brecher
Generous Backer | 263
+
0
-

Tak už jsem to našel :)

Metoda getUnsafeValues():

https://github.com/…ontainer.php#L135

m.brecher
Generous Backer | 263
+
0
-

@MarekBartoš díky za comment, proto jsem metodu getUnsafeValues() nenašel ve /vendor/nette/forms, protože tam není, ale je ve /vendor/nette/component-model ;)

m.brecher
Generous Backer | 263
+
+1
-

Trochu jsem se podivil, že metoda getValues() nevyžaduje povinný parametr, kdežto getUnsafeValues() vyžaduje, a opravdu ze zdrojového kódu Nette vyplývá, že první parametr je string|object|null $returnType = null, resp. string|object|null $returnType,. Možná by stálo za to aby se tento parametr u obou metod sjednotil a byl nepovinný, protože to asi ničemu nevadí a uživatelé Nette by to asi někteří uvítali.