Neznama chyba v najnovsom Frameworku

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

Mam problem s jednou chybou v najnovsom frameworku, t.j. NetteFramework-2.0.1-PHP5.3. Ked chcem vytvorit component vyhodi mi chybovu hlasku „Method BooksPresenter::createComponentPagin() did not return or create the desired component.“ a neviem kde je chyba. … moj kod

protected function createComponentPagin(){
            $vp = new VisualPaginator;
            return $vp;
        }

a do sablony som dal
{sontrol pagin}

viete kde je chyba?

Michal Vyšinský
Člen | 608
+
0
-

Vždyť tu chybu máš přesně popsanou – metoda (továrnička) ti nevrací komponentu. Zkus to změnit takto:

protected function createComponentPagin(){
      $vp = new VisualPaginator($this, "vp"); //tuším, že první parametr je parent a druhý název kontroly
}

Když předáš konstruktoru parent, tak už nemusíš dávat return. A ještě jedna chyba – ta ale asi bude jen v tvém příspěvku: {sontrol pagin} → {control pagin}

Takeshi
Člen | 596
+
0
-

Tak presno moj kod znie

protected function createComponentPagin(){
            $vp = new VisualPaginator($this, 'vp');
        }

v sablone mam

{control pagin}

a stale mi to bohuzial nefunguje

Etch
Člen | 403
+
0
-
protected function createComponentPagin(){
            $vp = new VisualPaginator($this, 'vp');
        }

v tom případě ti tam chybí return $vp. Navíc ve vedlejším threadu jsem ti poslal kompletní řešení, které funguje a je odzkoušené.

Michal Vyšinský
Člen | 608
+
0
-

https://forum.nette.org/…k-pagination#…

možná ti toto vlákno pomůže – s VP jsem ještě nepracoval – myslel jsem, že je to normální továrnička. Omlouvám se za špatné rady

Takeshi
Člen | 596
+
0
-

A ked sme uz pri tom, ze si s VP nepracoval … v com si robil? Aby som vedel vytvorit strankovanie aj spolu s tymi cislami co sa zobrazuju <1 2 3 .. 6>

Michal Vyšinský
Člen | 608
+
0
-

Možná je to k nevíře, ale ještě jsem stránkování nikdy nepotřeboval (asi kvůli povaze webů, co jsem zatím dělal – hlavně firemní prezentace)

Takeshi
Člen | 596
+
0
-

Sranda je v tom, ze pri Nette mam najviac problemov … pracujem, ako zaciatocnik, aj so Zend a Cake a s nimi problemy nemam :-)

newPOPE
Člen | 648
+
0
-

Domnievam sa ze problem je tu:

<?php
protected function createComponentPagin(){
	$vp = new VisualPaginator($this, 'vp'); //paggin != vp
}

//skusil by som to takto
protected function createComponentPagin($name){
	$vp = new VisualPaginator($this, $name);
}
?>

O Zende a Cake sa vykecavat nebudem :D. To je asi o vyzrelosti a osobnych preferenciach. :-)

Takeshi
Člen | 596
+
0
-

No tak som to urobil presne podla teba a do sablony som dal spominany {control pagin} a hadze mi tuto chybu …

Argument 1 passed to Nette\Application\PresenterComponent::__construct() must implement interface Nette\IComponentContainer, instance of BooksPresenter given, called in C:\Program Files (x86)\EasyPHP-5.3.8.0\www\Nette_Framework\app\presenters\BooksPresenter.php on line 31 and defined
newPOPE
Člen | 648
+
0
-

No problem je jasny ;-). (Domnievam sa, ze tie skusenosti s inymi FW nie su az tam kde som predpokladal :-))

Treba zistit preco sa tam predava co tam „asi“ ist nema. Nemoze tam byt nejaka starsia verzia VPaginatoru?

Michal Vyšinský
Člen | 608
+
0
-

Divné, píše to, že argument musí implementovat rozhraní Nette\IComponentContainer – což by presenter měl implementovat. Od čeho dědí ten tvůj BooksPresenter?

Tak jsem se na to mrkl a je to jasné – chyba v namespacech.
Nyní už není „Nette\IComponentContainer“ ale „Nette\IContainer“ zkus si ve zdrojáku VP najít, kde je použito „Nette\IComponentContainer“ a nahradit to za „Nette\IContainer“ – mělo by to teď jet, nebo by nás to aspoň mohlo posunout dál.

Editoval CherryBoss (16. 3. 2012 11:23)

Etch
Člen | 403
+
0
-

@Takeshi:

Zde si můžeš stáhnout SandBox s VisualPaginatorem. Vyzkoušej, jestli ti bude fungovat a pak napiš.

Takeshi
Člen | 596
+
0
-

Etch napsal(a):

Tak to čo si mi poslal mi ide uplne super, ale aj tak nechapem v com bola chyba. Idem to skumat. :-) Dakujem moc.