Cannot read an undeclared property TaskPresenter::$listRepository
- Zerig
- Člen | 70
Zdravím,
projíždím guickstart a naskočila mi tato chyba:
Cannot read an undeclared property TaskPresenter::$listRepository.
…/app/presenters/TaskPresenter.php:12 source ► Nette\Object→ __get
(arguments ►)
2:
3: /**
4: * TaskPresenter presenter.
5: */
6: class TaskPresenter extends BasePresenter
7: {
8: private $list;
9:
10: public function actionDefault($id)
11: {
12: $this->list = $this->listRepository->find($id);
13: }
14:
15:
16: public function renderDefault()
Nevíte někdo kde dělám chybu? Jedu přesně podle návodu a jsem u po tuto šablonu: https://doc.nette.org/cs/quickstart#…
Mám NetteFramework-2.0.10-PHP5.3 a na serveru php5.4
- David Matějka
- Moderator | 6445
a pritom by stacilo se vratit o par radku vyse. https://doc.nette.org/cs/quickstart#…
- Zerig
- Člen | 70
Tady mám celý TaskPresenter.php
<?php
/**
* TaskPresenter presenter.
*/
class TaskPresenter extends BasePresenter
{
private $listRepository;
protected function startup()
{
parent::startup();
$this->listRepository = $this->context->listRepository;
}
private $list;
public function actionDefault($id)
{
$this->list = $this->listRepository->find($id);
}
public function renderDefault()
{
$this->template->list = $this->list;
$this->template->tasks = $this->listRepository->tasksOf($this->list);
}
}
Takže by to tam mělo být
- Zerig
- Člen | 70
Argument 1 passed to Todo\ListRepository::tasksOf() must be an instance of Nette\Database\Table\ActiveRow, boolean given, called in /www/sites/3/site16243/public_html/sandbox/app/presenters/TaskPresenter.php on line 27 and defined
File: …/app/model/ListRepository.php Line: 10
1: <?php
2: namespace Todo;
3: use Nette;
4:
5: /**
6: * Tabulka list
7: */
8: class ListRepository extends Repository
9: {
10: public function tasksOf(Nette\Database\Table\ActiveRow $list)
11: {
12: return $list->related('task')->order('created');
13: }
14: }
- Zerig
- Člen | 70
Tak už je to v pořádku.
Chyba byla opravena jak jsi mi Draffix poradil s tím array. Já to zkoušel,
ale na špatně zadané adrese, proto to nefungovalo.
Takže místo toho co je v návodu v TaskPresenter.php:
$this->list = $this->listRepository->find($id);
jsem dal toto:
$this->list = $this->listRepository->findBy(array('id' => $id))->fetch();
Moc děkuji za radu.
Editoval Zerig (8. 4. 2013 16:17)