formulář nepředává nějaká data

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

Dobrý den,
mám dost nepříjemný problém s Nette Forms, nepředává nějaké hodnoty . . Příklad

<select id="registraceForm-okres" name="okres"><optgroup label="Hlavní město Praha"><option value="3100">Hlavní město Praha</option></optgroup></select>

toto vygeneruje naprosto v pořádku, v kódu je $form->addSelect, prostě všechno super – potom hodnoty přijmu přes getValues() a prostě se jednou za čas stane, že nějaká chybí. Přitom v $_POST leží naprosto správně. Co něco takovýho může způsobovat?

Ještě dodám, že se ta položk přijme, tj. ve výše uvedeném případě getValues() je přítomen záznam „okres“ ale má hodnotu null.

Děkuji

Editoval onny (1. 3. 2011 16:53)

onny
Člen | 67
+
0
-

A ještě dodávám, že se to zasekne pravidelně, tj na formuláři s 20 položkami v tomto případě jen okres a vždycky po všech refreshích a možnostech se nepropíše jen okres.

Patrik Votoček
Člen | 2221
+
0
-

zkus si když to nastane dumpnout $form['okres']->items jestli obsahuje to co má. Protože pokud neobsahuje tak to nette bere jako pokus o podvržení a hodí null.

onny
Člen | 67
+
0
-

Uvedené hází null, není tam vůbec nic. Co ale takové chování způsobí a jak tomu zabránit?

Patrik Votoček
Člen | 2221
+
0
-

způsobuje to to že selecbox neplníš možnostmy které má mít… bez více infomací (kódu víc neporadím)

onny
Člen | 67
+
0
-

Příkládám a budu rád, když se na to podíváš

// predpoklada samozrejme db (kde id je vzdy jen cislo)

$i = 0;
    $kraje = dibi::query("SELECT * FROM kraje ORDER BY text ASC")->fetchAll();
    foreach($kraje as $kraj) {


      if($kraj["kod"] != '00') {
      $kod_kraj = $kraj["kod"];

      // jeho okresy
      $okresy = dibi::query("SELECT * FROM okresy WHERE kod_kraj =$kod_kraj ORDER BY nazev ASC")->fetchAll();
      $o = 0;
      foreach($okresy as $okres) {

        $k = $okres["kod"];
        $ziskane_pole[$k] = $okres["nazev"];
        $o++;
      }


      // projdeme okresy
      $k = $kraj["text"];
      $umisteni_vygenerovano[$k] = $ziskane_pole;
      $i++;
      }
    }


$form->addSelect('okres', 'Okres:', $umisteni_vygenerovano);

přihazuji dump $umisteni_vygenerovano

Hlavní město Praha
128	Hlavní město Praha
Jihočeský kraj
331	České Budějovice
440	Český Krumlov
442	Jindřichův Hradec
443	Písek
111	Prachatice
112	Strakonice
222	Tábor
norbe
Backer | 405
+
0
-

Máš ten kód co jsi sem dal umístěný v továrničce? A používej obarvování kódu php, aby to bylo lépe čitelné…

onny
Člen | 67
+
0
-

Omlouvám se, kód je vkládán jako control, tj

class FormRegisterAdvanced extends Control
...
 public function createComponentRegisterForm() {}