Undefined variable: posts

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

Jedu podle návodu quickstart a narazil jsem na to , že mi to nechce zkousnout předání proměnné tabulky do šablony.

HomePresenter :

<?php

namespace App\Presenters;

use Nette,
	App\Model;


/**
 * Homepage presenter.
 */
class HomepagePresenter extends BasePresenter
{
    /** @var Nette\Database\Context */
    private $database;

    public function __construct(Nette\Database\Context $database)
    {
        $this->database = $database;
    }

    public function renderDefault()
   {
    $this->template->posts = $this->database->table('posts')
        ->order('created_at DESC')
        ->limit(5);
   }

}

?>

default.latte :
<div n:foreach=„$posts as $post“ class=„post“>
<div class=„date“>{$post->created_at|date:‚F j, Y‘}</div>

<h2>{$post->title}</h2>

<div>{$post->content}</div>
</div>

Tabulku mám vytvořenou a připojení k databázi jsem několikrát kontroloval a předpokládám ,že kdyby se to nepřipojilo k MSQ tak mi NETT(mám v.2.3) něco zařve .. Dík za každou radu.

Andurit
Člen | 131
+
-2
-

Asi by som ten select dal do modelu,mohlo by to vyzerať nejako takto:.

<?php

namespace App\Model;

use Nette;
class PostManager extends Nette\Object
{
	private $db;

	public function __construct(Nette\Database\Context $database)
	{
		$this->db = $database;
	}
	function getAllPosts()
	{
		return $this->db->table('posts')->limit(5)->order("created_at DESC");
  	}

a potom v prezentri by to v tvojom prípade mohlo vyzerať nejako takto:

	public function renderDefault()
	{
		$this->template->posts= $this->database->getAllPosts();
	}

Editoval Andurit (9. 4. 2015 15:34)

David Matějka
Moderator | 6445
+
0
-

@Andurit to neresi problem, ktery tazatel ma.. a taky zbytecne zatezujes cloveka, ktery se uci nette par dni, modelovou vrstvou. Na to bude mit cas pozdeji :)

@brontosaurus divny, chybu tam nevidim. zkus zjistit, jestli to prochazi metodou renderDefault (treba si do ni dej exit; a uvidis, jestli aplikace skonci nebo ne)

brontosaurus
Člen | 49
+
0
-

Omlouvám se, ale HomepagePresenter jsem neměl správně nakopírovaný na hosting kde to zkouším. TeĎ už to tam je tak jsem to dal sem na fórum ale vyhodí mi to jinou chybu :

Nette\MemberAccessException
Cannot read an undeclared column ‚title‘

David Matějka
Moderator | 6445
+
+2
-

zkus promazat temp/cache

mimochodem, vyvijet na hostingu neni dobre, zprovozni si u sebe server – treba xampp, ve kterem je vsechno, co potrebujes

brontosaurus
Člen | 49
+
0
-

SUPER. Už to jede, díky. Localhost mám určitě v plánu, bohužel na mých Win7 starter se mi zatím nepodařilo rozběhnout MySQL a asi to snad ani nejde..