neproběhne vypsání z databáze

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

Ahoj,
dělám si / upravuju aplikaci na vypsání uživatelů z db. Vše mi fungovalo dokud jsem nechtěl aby se to zobrazovalo pouze přihlášeným uživatelům.

funkční kód bez ověření přihlášení

<?php

use Nette\Http as Http;
use Nette\Security\User;

class UsersPresenter extends BasePresenter {


	/** @var Users */
  private $users;

	protected function startup() {
        parent::startup();
        $this->users = $this->context->users;
    }

    public function handleUsersJson() {
        $all_users = array();
        $all_users["aaData"] = $this->users->findAll()->orderBy('id')->fetchAll();
        $this->sendResponse(new Nette\Application\Responses\JsonResponse($all_users));
    }

	public function renderDefault() {
		$all_users = $this->users->findAll()->orderBy('id')->fetchAll();
		$this->template->all_users = $all_users;
	}

}

nahrazen

<?php

use Nette\Http as Http;
use Nette\Security\User;

class UsersPresenter extends BasePresenter {

  protected function startup()
  {
      parent::startup();

      if (!$this->getUser()->isLoggedIn()) {
          $this->redirect('Sign:in');
      }
  }

	/** @var Users */
  private $users;

	protected function rend() {
        parent::rend();
        $this->users = $this->context->users;
    }

    public function handleUsersJson() {
        $all_users = array();
        $all_users["aaData"] = $this->users->findAll()->orderBy('id')->fetchAll();
        $this->sendResponse(new Nette\Application\Responses\JsonResponse($all_users));
    }

	public function renderDefault() {
		$all_users = $this->users->findAll()->orderBy('id')->fetchAll();
		$this->template->all_users = $all_users;
	}

}

chybu mi to žádnou nevypíše, ale taky mi neprovede dotaz na db což mi předtím udělolo.

Díky za radu ;)

s4muel
Člen | 92
+
0
-

na co sluzi rend() metoda?

protected function rend() {
    parent::rend();
    $this->users = $this->context->users;
}

nechcel si toto:

$this->users = $this->context->users;

nechat v startup() metode po skontrolovani prihlasenia? aby sa ti naplnilo $this->users

kasparek
Člen | 43
+
0
-

Jo no přesně to, přepsal jsem to na

protected function startup()
{
    parent::startup();

    if (!$this->getUser()->isLoggedIn()) {
        $this->redirect('Sign:in');
    }
    else {
        $this->users = $this->context->users;
    }
}

Včera jsem nad tím seděl 2 hodiny a ani ťuk a pak když jsem šel spát tak mě to taky napadlo ;)

ale díky za radu

enumag
Člen | 2118
+
0
-

To else bych smazal. Redirect vyhodí výjimku takže kód za tim se už stejně neprovede.