implementace VisualPaginator

- Saska
 - Člen | 23
 
Mám problém s implementací komponenty Visual Paginator.
V základu jsem vycházel z ukázek u popisu komponenty,jenomže pořád
to hází.
InvalidStateException
Unknown CurlyBrackets macro ‚{control vp}‘ in file ‚C:\xampp\htdocs\nette\rs\document_root/../app/templates/FrontModule/Default/default.phtml‘.
můj kód
<?php
	public function renderDefault(){
		....
		$vp = new VisualPaginator($this, 'vp');
		$paginator = $vp->getPaginator();
		$paginator->itemsPerPage = $limit;
		$paginator->itemCount = $recordsCount;
	}
?>
Nemohlo by to nějak souviset s tím, že filtr CurlyBracketsFilter se nastavuje už v metodě beforeRender()?
Všem předem děkuji za případnou pomoc.

- jasir
 - Člen | 746
 
Nějak tam teď nic nevidím, postni jsem ještě tu šablonu kde
používáš ten widget a také si překontroluj, že neregistruješ dvakrát ve
své struktuře presenterů CurlyBracketsFilter, nějak si teď
u posledních revizí nejsem jistý jestli to vyhodí chybu/varování.
Jenom snad – určitě si to přepiš to
createComponent{name}, viz zde na fóru changelog
a další témata.
Editoval jasir (25. 7. 2009 0:32)

- Klokan
 - Člen | 47
 
Ahojte, můžete mi prosím někdo poradit v čem by mohl být problém
?
Chci zaregistrovat VisualPaginator pomocí createComponent, ale neustále to
hlásí, že komponenta neexistuje:
<?php
  protected function createComponentVisualPaginator()
  {
     return new VisualPaginator($this, 'vp');
  }
  public function renderDefault()
  {
    $vp = $this->getComponent('vp');
    $paginator = $vp->getPaginator();
      ...
  }
?>
Pokud použiju vytvoření v metodě, vše funguje
<?php
  public function renderDefault()
  {
     $vp = new VisualPaginator($this, 'vp');
     $paginator = $vp->getPaginator();
      ...
  }
?>
Zkoušel jsem i toto, ale stále stejná hláška:
<?php
    protected function createComponentVisualPaginator()
    {
        // Vytvor komponentu
        $vp = new VisualPaginator();
        // Pripoj ji k presenteru
        $this->addComponent($vp, 'vp');
        return $vp;
    }
?>
Nevidíte tam prosím někdo chybu ?
(Mám verzi nette 0.9.1)

- vlki
 - Člen | 218
 
Jde o to, že v továrničce buď nesmíš komponentu hned zaregistrovat do stromu komponent a pokud ano, tak se stejným názvem jako má ta továrnička.
Pokud tedy vytváříš komponentu ‚vp‘, kterou pak v šabloně
vykresluješ pomocí {control vp}, tak musíš mít továrničku
nějak takto…
	protected function createComponentVp($name) // jako parametr se předává samotný název komponenty, pokud je potřeba
	{
		return new VisualPaginator; // není potřeba připojovat do stromu komponent, tím že se vrátí pomocí return, tak bude připojena
		// nebo
		new VisualPaginator($this, $name);
		// nebo
		$vp = new VisualPaginator;
		$this->addComponent($vp, $name);
	}
Doufám, že to pomohlo.