Trying to get property of non-object v template
- attika8
- Člen | 23
Dobrý den,
narazil som na mensi problem. Mam zakladnu kostru aplikacie a pri vypise jednotlivych dat mi v template vyhadzuje chybu : Trying to get property of non-object. Je mi jasne ze chyba je v tom ze mi funkcia nevracia objekt, ale neviem sa dostat k tomu aby to objekt bol.
Takto vyzera model pri ktorom volam metodu getAll(), ktora mi vrati info o knihe.
<?php
class AdminFacade extends Nette\Object
{
private $database;
public function __construct(Nette\Database\Connection $database)
{
$this->database = $database;
}
function getAll()
{
return $this->database->table('book');
// return $this->database->query('SELECT * FROM book'); tiez nefunguje
}
?>
V presenteri potom v metode renderDefault poslem do templatu premennu $books
<?php
class AdminPresenter extends BasePresenter
{
private $AdminFacade;
private $books;
public function __construct(Model\AdminFacade $AdminFacade)
{
$this->AdminFacade = $AdminFacade;
}
function startup()
{
parent::startup();
}
public function renderDefault()
{
$this->template->books = $this->AdminFacade->getAll();
// dump($books);
}
?>
A nakoniec pri vypise sa snazim dostat jazyk knihy ktory je ulozeny v entite language(id_language,name) a language je cudzi kluc do tabulky book.
<table>
<tr n:foreach="$books as $book">
<td>{$book->name}</td>
<td>{$book->language->name}</td> // tu vyhodi chybu , Trying to get property of non-object
<td>{$book->language} // takto to funguje ale dostanem iba id_language, co pri vypise knih nie je dostacujuce
</tr>
</table>
Uvedomujem si ze tato chyba sa tu uz vyskytuje ale bohuzial odpovede mi nepomohli v tomto pripade. Dakujem za kazde rady.
Editoval attika8 (1. 3. 2013 2:44)
- Vojtěch Dobeš
- Gold Partner | 1316
Zkus nejprve přepsat předání závislostí presenteru na
inject
. Teď si přepisuješ konstruktor presenteru, což
není dobře.
public function injectAdminFacade(Model\AdminFacade $AdminFacade)
{
$this->AdminFacade = $AdminFacade;
}
- petr.pavel
- Člen | 535
Mrkni do debug panelu na dotazy, které to posílá do databáze. Jestli se to ptá dobře a jestli to fakt něco najde.
- attika8
- Člen | 23
Dakujem castamir. Toto moj problem vyriesilo a vypisal som name.
$book->ref("language")->name
@Šaman – prepac ze som nedodal dump.sql , primarne kluce som mal nastavene (aspon mam taky pocit) spravne.
@petr.pavel – dotaz vracal spravne query, len som sa nevedel dostat k navaznostiam.
Dakujem za vase rady.