Přidání nového prvku do selectboxu
- spiider
- Člen | 162
Ahoj, potřeboval bych poradit s tímto: Mám formulář pro přiřazování článků k uživatelům. V tomto formuláři vyberu ze selectu uživatele + zadám další údaje. Vedle tohoto selectu mám link na přidání nového uživatele, který mi otevře jquery popup kde vyplním údaje a přidám nového uživatele a po odeslání bych potřeboval tohoto nově přidaného uživatele přidat do selectboxu bez toho aby se mi vymazaly údaje z formuláře původního. Poradíte prosím jak to správně udělat? Zkoušel jsem to přes snipety a invalidaci ale potřeboval bych refreshnout jenom ten select s uživateli a zatím se mi to nedaří. Díky za rady
- Vojtěch Dobeš
- Gold Partner | 1316
Formulář budeš muset určitě vykreslovat manuálně. Obalíš snipettem
jen ten select. A musíš ho správně invalidovat. Asi budeš muset po
zpracování formuláře nastavit tomu selectu znovu setItems()
,
protože jinak by se i ve snippetu vrátil ještě v podobě před přidáním
toho nového uživatele.
- Vojtěch Dobeš
- Gold Partner | 1316
Nepřihodil bys klikatelnou laděnku? Pomohla by, řešení se skrývá v ní.
Každopádně bych zkusil přidat
$this->template->_form = $this['nazevFormu'];
, ale nejsem si
jist, jestli to pomůže.
- spiider
- Člen | 162
Tak to pomohlo a už to chybu nehlásí, nicméně pokud kliknu na odkaz nový klient tak se mi hned již vyplněná data smažou a zobrazí se popup. Vyplním nového uživatele a form odešlu a po přidání tam mám
$this->invalidateControl('client');
ale select uzavřený ve snippetu se neaktualizuje.
Takže shrnutí:
- po vyvolání popupu se vymažou všechna pole
- po zadání nového klienta se neobnoví select ve snipetu
Díky
- MartyIX
- Člen | 217
spiider: Ne uplne hezke, ale treba takto:
V onSuccess metode formulare pridat radky:
$this->presenter->payload->updateUsers = $users;
$this->invalidateControl('updateUsers');
Sablona
{snippet updateUsers}
{if isset($updateUsers)}
<script type="text/javascript">
//<![CDATA[
var users = {$users};
// set users as options of given select box
//]]>
</script>
{/if}
{/snippet}