propojení výsledku dotazu z klauzule query a šablony

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

Dobrý den,
prošel jsem si dokumentaci i návody zde na webu, ale nedaří se mi následující věc. Řeším to už několikátý den.

Model s názvem Base:

<?php

namespace App;

use Nette;

class Base extends Nette\Object
{

	/** @var Nette\Database\Connection */
	protected $connection;

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

  public function vratEmaily(){
    return $this->connection->query('SELECT kontakty.hodnota FROM kontakty JOIN typy_kontaktu ON kontakty.typy_kontaktu_id = typy_kontaktu.id WHERE typy_kontaktu.nazev = "E-mail"');
  }

  public function vratTelefony(){
    return $this->connection->query('SELECT kontakty.hodnota FROM kontakty JOIN typy_kontaktu ON kontakty.typy_kontaktu_id = typy_kontaktu.id WHERE typy_kontaktu.nazev = "Telefon"');
  }

  public function vratSouradnice(){
    return $this->connection->query('SELECT kontakty.hodnota FROM kontakty JOIN typy_kontaktu ON kontakty.typy_kontaktu_id = typy_kontaktu.id WHERE typy_kontaktu.nazev = "GPS souřadnice"');
  }

}

BasePresenter:

<?php

namespace App\Presenters;

use Nette,
	App\Model;

/**
 * Base presenter for all application presenters.
 */
abstract class BasePresenter extends Nette\Application\UI\Presenter
{
    /** @var \App\Base @inject */
    public $base;

    public function beforeRender()
    {
      $this->template->emaily = $this->base->vratEmaily();
      $this->template->telefony = $this->base->vratTelefony();
      $this->template->souradnice = $this->base->vratSouradnice();
    }
}

a nakonec kus ze šablony @layout.latte:

     {foreach $emaily as $email}
     <font class='horniKontakt'>{$email->hodnota}{sep}, {/sep}</font>
     {/foreach}
     <font class='horniOddelovac'>|</font>
     <img class='kontakt' src='{$basePath}/images/horni_telefon.png'>
     {foreach $telefony as $telefon}
     <font class='horniKontakt'>{$telefon->hodnota}{sep}, {/sep}</font>
     {/foreach}
     <font class='horniOddelovac'>|</font>
     <img class='kontakt' src='{$basePath}/images/horni_souradnice.png'>
     {foreach $souradnice as $gps}
     <font class='horniKontakt'>{$gps->hodnota}{sep}, {/sep}</font>
     {/foreach}

Najde tam prosím někdo chybu? Vyvolává to výjimku: Nette\InvalidStateException

Děkuju moc za cokoliv.

mkoubik
Člen | 728
+
0
-

Neprocházíš to foreachem dvakrát? Pokud jo, tak si to převeď na pole pomocí $result->fetchAll().

Jarek92
Člen | 91
+
0
-

Paráda, díky moc. Funguje :)