Přidání nového prvku do selectboxu

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

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
+
0
-

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.

spiider
Člen | 162
+
0
-

Manuálně formulář vykresluju. Ale když do snipetu obalim jenom select hlasí to chybu: Call to a member function getControl() on a non-object

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

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
+
0
-

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í:

  1. po vyvolání popupu se vymažou všechna pole
  2. po zadání nového klienta se neobnoví select ve snipetu

Díky

spiider
Člen | 162
+
0
-

Neporadí pls někdo? Nemohu pořád nikde nic najít a i všechny pokusy vycházejí na prázdno :(

MartyIX
Člen | 217
+
0
-

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}