Jak na Multiplier komponent, konkrétní příklad použití
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- thm
- Člen | 147
Ahoj,
prosím o radu resp. konkrétní ukázku užití Multiplieru.
Mám jednoduchou komponentu:
class Counter extends \Nette\Application\UI\Control{
/** @persistent */
public $number;
public function handleAdd(){
++$this->number;
}
public function render(){
$this->template->setFile(__DIR__.'\counter.latte');
$this->template->number = $this->number;
$this->template->render();
}
}
k ní šablonu counter.latte
{$number} <a n:href="add!">+</a>
a továrničku
public function createComponentCounter(){
return new Counter;
}
Pokud zavolám v nějakém view
{control counter}
{control counter}
{control counter}
tak se komponenta vykreslí a samozřejmě, pokud kliknu na
<a n:href="add!">+</a>
, tak se $number
zvýší u všech komponent (protože se jedná o jedinou, vykreslenou
vícekrát).
Prosím o konkrétní úpravu továrničky a handle metody, aby fungovala každá samostatně. Díky moc.
- thm
- Člen | 147
Jojo, to jsem četl, ale nejsem z toho mouodrý…
Pokud upravím továrničku na
public function createComponentCounter(){
return new Nette\Application\UI\Multiplier(function(){
return new \App\Test\Counter;
});
}
Nette mi vyhodí There is no handler for signal ‚add‘ in class Nette\Application\UI\Multiplier.
Nevím ale jak upravit handleMetodu, a navíc si myslím, že tu továrničku taky nemám správně (?)
- Vojtěch Dobeš
- Gold Partner | 1316
Ještě je třeba upravit šablonu na:
{control counter-1}
{control counter-2}
{control counter-3}