Propojeni modelu a presenteru : Undefined variable: posts
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- safik
- Člen | 11
Zdravím, mám model:
<?php
namespace App\Model;
use Nette,
Nette\Utils\Strings,
Nette\Security\Passwords;
class MorpheusModel extends Nette\Object
{
private $db=null;
public function __construct(Nette\Database\Context $database){
$this->db=$database;
}
public function getNotices(){
return $this->db->table('posts')->limit(5)->order("created_at DESC");
}
}
?>
presenter:
<?php
namespace App\Presenters;
use Nette,
App\Model;
/**
* Homepage presenter.
*/
class MorpheusPresenter extends BasePresenter
{
public function renderDefault()
{
$this->template->posts = $this->database->getNotices();
}
} ;
?>
a kod
{block content}
<div id="banner">
<h1 n:block=title>Notices</h1>
</div>
<div id="content">
<table>
{foreach $posts as $notice}
<tr><td>{$notice->title}</td></tr>
atd....
{/foreach}
</table>
</div>\--
a pořád mě to vypisuje Undefined variable: posts. Kde mám chybu? Děkuji.
- safik
- Člen | 11
Teď jsem si všiml, že jsem sem dal jinou verzi presenteru.
je to
<?php
namespace App\Presenters;
use Nette,
App\Model;
/**
* Homepage presenter.
*/
class MorpheusPresenter extends BasePresenter
{
private $model=null;
private function getModel(){
if(!isset($this->model)){
$this->model= new Model\MorpheusModel($this->context->getService("database"));
}
return $this->model;
}
public function renderDefault()
{ $this->getModel();
$this->template->posts = $this->getModel()->getNotices();
}
}
to je celý presenter
- David Matějka
- Moderator | 6445
A jaky presenter a jakou akci nette spousti? (vidis to v tracy routing panelu)
- David Kudera
- Člen | 455
wassy napsal(a):
co v presenteru udělá
dump($this->getModel()->getNoticies());
? Není tam náhodouNULL
?
I kdyby byl null, tak to přece nehodí „undefined variable posts“
- David Kudera
- Člen | 455
safik napsal(a):
Tak jsem zjistil, že chyba je jinde. Když jsem vše z MorpehusPresenter hodil do HomepagePresenteru tak to fungovalo. Co mám udělat aby to jelo i když to je v tom mém presenteru?
Přesně proto se tě @DavidMatějka ptal na spuštěnou akci ;-)