addSelect ⇒ setDefaults ⇒ Value '' is out of allowed set
- Ja
- Člen | 260
Zdravim,
nesetkavam se s tim poprve, kdy se nejakym nedopatrenim do selectu pri volani setDefaults cpe hodnota, ktera v nem neni pritomna, viz:
<?php
Nette\InvalidArgumentException
Value '' is out of allowed set ['Od prodejce', 'Od přátel, známých', 'Reklama na prodejním autě', ...] in field 'found_out_via'
?>
Muzu sice odchytavat vyjimku, a pote notifikovat uzivatele, ale to mi neprijde jako elegantni reseni. Jak se s timto problemem vyporadavate vy?
Diky
- cendak
- Člen | 21
Jde o to, že select je naopak chytrý v tom, že si nenechá vnutit jinou hodnotu, než s jakou byl vytvořen ve formu, což je důležité pro bezpečnost.
Nastavování default value se dá oštřit například takto:
// set default value $testDefaultValue
if (array_key_exists($testDefaultValue, $form["test"]->getItems()) )
{
$form["test"]->setDefaultValue($testDefaultValue);
}
Chování by se dalo nehezky obejít tak, že budeš data načítat přímo z getHttpData() a tu kontrolu oboru hodnot vypnout a obejít, ale osobně tuhle techniku nepovažuji za šťastnou a nikdy bych ji nepoužil. V tvém případě by bylo nejlepší nabízet buď jednu volbu ze selectu, nebo text input pro jiné.