jak na hodnoty option u selectboxu?

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

Ahoj,

mam dotaz **SELECT id, name FROM polozky **

a chci vysledkem tohoto dotazu naplnit ve formulari selectbox tak, aby se nazvy moznosti naplnily daty ze sloupce name a hodnoty option value jednotlivych moznosti sloupcem id.
Nevim ale jak to udelat, jelikoz metoda tridy AppForm addSelect() prijima pouze pole polozek – nazvu a options mi to cisluje defaultne od 0 do X

Blizzy
Člen | 149
+
0
-

Myslím, že může přijmout pole položek, kde klíče budou id a hodnoty budou name. Pole v tomto tvaru se dá získat např. pomocí metody fetchPairs() u dibi.

suxik
Člen | 62
+
0
-

vyresil jsem to takto ve foreach cyklu a predavam konstruktoru selectboxu cele pole items a funguje to:

<?php
	$items[] = Html::el('option', $value['name'])->value($value['id']);
?>

Ted z toho ale vznikl problem, kdy po odeslani formulare mam jako hodnotu selectboxu NULL, pritom selectbox je vygenerovan spravne

Editoval suxik (14. 2. 2010 16:21)

redhead
Člen | 1313
+
0
-

proč nepoužiješ fetchPairs jak poradil Blizzy? To cos napsal je kravina

$result = dibi::select()->...->fetchPairs('id', 'name');

//vrátí záznamy jako

array(
	289 => 'Name 1',
	198 => 'Name 2',
	109 => 'Name 3',
)

ten pak předáš ve volání addSelect();

suxik
Člen | 62
+
0
-

protoze ja nevytahuju z DB jen pary, ale ke kazde kategorii take jeji nadrazenou a zobrazuju to v nazvu option jako kategorie / podkategorie, takze ve skutecnosti selectuju 3 veci a na to se mi fetchpairs nehodi, ale asi to budu muset nejak predelat, protoze to stale odesila NULL

Blizzy
Člen | 149
+
0
-

Můžeš udělat foreach, ve kterém si pole $items, které předáváš metodě addSelect, naplníš:

<?php
$items = array();
foreach ($values as $value) {
	$items[$value['id']] = $value['name'];
}
?>

Případně by to možná šlo i bez použití foreach pomocí nějakých funkcí pro práci s polem, ale tohle bude asi nejsnazší.

suxik
Člen | 62
+
0
-

tohle funguje, diky, zase jsem kousek dal :)

suxik
Člen | 62
+
0
-

poradi jeste nekdo, jak dostat do selectboxu defaultni hodnotu? nacitam do editacniho formulare polozku z DB, vsechny inputy naplnim, ale nevim, jak jednoduse zobrazit v selectboxu danou hodnotu.