Neznama chyba v najnovsom Frameworku
- Takeshi
- Člen | 596
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
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}
- Etch
- Člen | 403
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
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
- Michal Vyšinský
- Člen | 608
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)
- newPOPE
- Člen | 648
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
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
- Michal Vyšinský
- Člen | 608
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
@Takeshi:
Zde si můžeš stáhnout SandBox s VisualPaginatorem. Vyzkoušej, jestli ti bude fungovat a pak napiš.