Hlasování s odesíláním hlasu pomocí AJAXu + dynamický obsah

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

Mám stránku, kde se nachází seznam položek. U každé položky je tlačítko, které znamená hlas pro tu danou položku. Je potřeba, aby se jednotlivé položky renderovaly jako samostatné komponenty (používají se v jiných částech webu jednotlivě)
Po kliknutí na tlačítko se má pomocí AJAXu zavolat handleAction(), kde proběhne nějaká práce s databází a poté:

if($this->presenter->isAjax()) {
	$this->invalidateControl();
} else {
	$this->redirect('this');
}

Snažil jsem se nastavit v šabloně komponenty dynamický název snippetu:

<div n:snippet="nazev{$id}">
	...
</div>

Jenže to nejde, protože mi to vyhodí chybu, že dynamické snippety musim uzavřít do statického. Dá se to nějak obejít? Ta komponenta má trošku složitější strukturu, než se zdá z popisu co jsem uvedl, proto se hodí, aby měla vlastní třídu, jenže v takovém případě bych musel přijít na způsob, jak z těla komponenty invalidovat nadřazený statický snippet, který je deklarovaný v šabloně, která volá komponentu. Dá se to nějak obejít nebo musim měnit strukturu, aby uzavírající statický snippet i ty dynamické byly v jedné šabloně a tedy „o sobě věděli“?

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

Primární otázka: proč potřebujíš mít v té komponentě snippet s dynamickým názvem? Použij obyčejný statický název – i tak bude snippet pro každou z těch komponent jedinečný (to je zajištěno unikátností oněch instancí, resp. pravidlem že každá komponenta musí mít jedinečný název), protože předpokládám, že používáš UI\Multiplier.