Hodnota je mimo rozsah selectboxu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
vosy
Člen | 532
+
0
-

jak se mohu vyhnout kontroly zda hodnota je v selectboxu.

pripadne pokud hodnota neni v selectboxu tak bay se zobrazil definovany prompt

Kori
Člen | 73
+
0
-

A kde chceš tu kontrolu obejít? Při setování hodnoty? Tak si odchyť ‚Nette\InvalidArgumentException‘.

David Matějka
Moderator | 6445
+
0
-

Je na to otevreny PR, co se presne snazis vyresit?

vosy
Člen | 532
+
0
-

situace je takova:
mam seznam s plozkama a,b,c,d,e

v detailu uzivatele si vyberu jednu z moznosti.

problem nastane kdyz se za pul roku treba odstrani C a u uzivatelu, kteri maji zvoleno C bych potreboval aby ze nezobrazoval error ale selectbox s promptem.

Pavel Kravčík
Člen | 1196
+
+2
-

A nebylo by lepší upravit všechny uživatele „where = C“?

ondraondra81
Člen | 82
+
+1
-

Napadá mě, jestli by nebylo řešení udělat si kontrolu při setDefaults()

něco jako toto.

$options = array(
            'a'=>'a',
            'b'=>'b',
            'c'=>'c',
            'e'=>'e'
        );

        $form = new Form();
        $form->addText('name', 'jméno:');
        $form->addSelect('selectbox', 'Volba:', $options)
            ->setPrompt('Zvolte si');

        // nastaveni vyberu.

        $values = array(
            'name' => 'hadej kdo jsem',
            'selectbox' => 'd');

        if (in_array($values['selectbox'], $options))
            unset($values['selectbox']);

        $form->setDefaults($values);
mkoubik
Člen | 728
+
0
-

U uživatelů kteří mají C to přidej do možností v selectboxu, to mi přijde jako nejlogičtěší varianta.

vosy
Člen | 532
+
0
-

ondraondra81: dekuji, to vypada hezky, dekuji, proc vse vidim slozite :)