Select Box přidání vychozí hodnoty
- Milhaus87
- Člen | 22
Potřeboval bych menší radu. Asi to je jednoduchý ale nevím jak toho
dosáhnout.
Naplním si select box hodnotamy z databáze. Teď nevím jak mám nastavit
první hodnotu boxu aby byla Vše.
Teď ten formulář po rozkliknutí dává možnost Milan Pepa. Potřebuju aby
jako první položka byla Vše.
Model:
<?php
use Nette\Object;
class KomentareModel extends Object {
public static function filtruj() {
return dibi::fetchPairs('Select distinct komentare.id_uzivatele,username from users join komentare on users.id_uzivatele = komentare.id_uzivatele');
}
}
?>
form v presenteru
<?php
protected function createComponentForm($name) {
$prom = KomentareModel::filtruj();
$form = new AppForm($this, 'form');
$form->addSelect('uzivatel', 'Podle uzivatele', $prom);
$form->addSubmit('send');
$form->onSubmit[] = callback($this,'formSubmitted');
return $form;
}
?>
- Patrik Votoček
- Člen | 2221
pupitooo napsal(a):
Zkus toto:
… setValue().
setValue()
se vyhni obloukem pokud doopravdy nevíš
co děláš…
- Milhaus87
- Člen | 22
No tak ono se to tam přidá jak píšeš. Problém je ale teďka v tom
že:
puvodně byly hodnoty tyhle:
1 ⇒ Uzivatel1
3 ⇒ Uzivatel2
array_unshift($prom, „vše“);
se to o indexuje
0 ⇒ Vse
1 ⇒ Uzivatel1
2 ⇒ Uzivatel3
ale já potřebuju aby index zůstal stejnejů
0 ⇒ Vše
1 ⇒ Uzivatel1
3 ⇒ Uzivatel2
- Milhaus87
- Člen | 22
mám to teďka takhle
<?php
protected function createComponentForm($name) {
$all = array("0" => "vše");
$prom = KomentareModel::filtruj();
$result = array_merge($all, $prom);
$form = new AppForm($this, 'form');
dump($result);
$form->addSelect('uzivatel', 'Podle uzivatele', $result);
$form->addSubmit('send');
$form->onSubmit[] = callback($this,'formSubmitted');
return $form;
}
?>
a stejnak se oindexuje jinak
dump($result)
array(3) [
0 => "vše" (4)
1 => "Milan" (5)
2 => "Pepa" (4)
]
u pepi potřebuju aby byl index 3
- pupitooo
- Člen | 10
V tom případě ti moc nepradím. Ty potřebuješ ty dvě pole spojit se
zachováním indexů. array_merge by to mělo umět.
kdyžtak mrkni na http://cz.php.net/…ay-merge.php
nebo zkus najít nějaký jiný způsob.
Kamenická metoda by byla udělat něco ve stylu:
$result = array("0" => "vše");
foreach ($prom as $key => $value)
$result[$key] = $value;
- Martin
- Člen | 171
Díky, taky mi to pomohlo. Zajímavé je, že v dokumentaci php je to tak zastrčené, že když člověk neví, že právě to hledá, nevšimne si. Respektive popis i příklad se zabývají jen nahrazováním hodnot u textových klíčů. Ale také je zajímavé, že hledání řešení php ‚NENette‘ problému přes google stejně nakonec dostane hledajícího sem.
Editoval Martin (4. 4. 2011 22:42)