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.