Option slected nacteny z DB
- scientific
- Člen | 94
Ahoj všem,
učím se dělat formuláře.
Umím načítat data z databáze do labelu, ale chtěl bych umět ta dyta načítat i do option selectu.
- Ve vytvářecím formuláři mám select, kterým se vybere hodnota.
- Ta se uloží do databáze.
- V editačním formuláři mám pouhý label, který vypisuje hodnotu, ale už ji neumím změnit, k tomu řeším tento problém.
Moje form metoda vypadá takto:
$this->parent = $parent;
$kategorie = $this->parent->admin->getModelFetchPairs();
$this->addSelect('model_id', '', $kategorie)->setPrompt('- vyber kategorii -');
Moje latte sablona vypada takto:
{if $editace}
{if $category}
<div class="form_row">
<label>Kategorie - Možnost volby selectem vypisuje "- vyber kategorii -"</label>
<span class="value">
<select n:name="category_id" class="value"></select>
</span>
<label>Kategorie - Vypis funguje</label>
<span class="value">{$category->name}</span>
</div>
{/if}
{/if}
Možná je toto nějak cesta:
$this->addSelect('model_id', '', $kategorie)->setDefaults(neco);
Jak to prosím zařídit?
- Kamil Valenta
- Člen | 822
Buď nad celým formem:
$form->setDefaults(['model_id' => $id_modelu_nactene_z_db]);
Nebo nad samotným inputem:
$this->addSelect('model_id', '', $kategorie)->setDefaultValue($id_modelu_nactene_z_db);
- scientific
- Člen | 94
Super, setDefaultValue trochu funguje.
Trochu protože funguje jen v případě, že ta defaultní hodnota fakt
existuje.
Když třeba editovaný článek doposud nebyl zařazen v žádné kategorii,
tak $id_modelu_nactene_z_db je prázdné a tudíš se v selectu objeví první
kategorie z DB, nikoliv prázdné pole.
EDIT: Vyřešil jsem to takto
if(!empty($idDefaultVideo->id)){
$this->addSelect('video_id', '', $videos)->setDefaultValue($idDefaultVideo->id);
} else {
$this->addSelect('video_id', '', $videos)->setPrompt('- vyberte video -');
}
Vyřešeno tedy, díky.