Vypsani konkretniho prvku pole do sablony

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

Chtel bych se zeptat jak bych mohl v sablone vypsat konkretni prvek pole.

<?php

//model
    public function generateUrls() {
        return $this->connection->query('SELECT name AS url FROM typearticle ORDER BY typeArticleID ASC');
    }
//presenter
    protected function beforeRender() {
        $linksSEO = new Front_ArticleModels();

        $this->template->urls = $linksSEO->generateUrls();
    }
//template (toto uy neni spravne)
            <div class="top_menu_x top_menu_1">
                <a href="{link :Front:Articles:, $ur->url[1]}">naše firma</a>
            </div>

?>

Do presentru vstupuje jednorozmerne pole. Kdyz udelam {foreach $urls as $ur}{$ur->url}{/foreach}, tak to bude fungovat, ale jsem nak schopnej vypsat na urcitych mistech konkretni pravky pole?.

Editoval saimons (19. 4. 2010 9:00)

Rampa
Člen | 65
+
0
-

no, já bych asi nepředával do templatu objekt dibiResult, ale dal bych tam fetchAll() popřípadě fetchAssoc('nejakyID') a pak v templatu bude fungovat přístup jako přes pole ⇒ $urls[1]

saimons
Člen | 293
+
0
-

Nemohl by jsi mi to nak zkusiot popsat jak presne si to myslel? Jsem tkousel fetchAll(), ale ten taky vraci objekt, takze nelze pristupovat primo k prvkum pole. Jako napadlo me to v presentru to pomoci foreach predelat do pole, ale to me prijde dost krkolomne.

Šaman
Člen | 2594
+
0
-

DibiResult by mel byt objekt schopny vystupovat i jako pole. Takze normalne pres $result['xxx']. Kdyby ti neco vyhazovalo warningy, tak to predavej pretypovane na pole: $this->template->results = (array)$results;

//Edit: do sablony posilas promennou $urls, ale v sablone volas $ur->url[1], podle me by ti melo fungovat $urls[1]

Editoval Šaman (19. 4. 2010 13:58)

saimons
Člen | 293
+
0
-

Tak uz jsem to pochopil a funguje to, kdyby nekdo potreboval:

<?php

//model
    public function generateUrls() {
        return $this->connection->query('SELECT name AS url, typeArticleID AS id, nameView AS popis FROM typearticle ORDER BY typeArticleID ASC');
    }

//presenter
    protected function beforeRender() {
        $linksSEO = new Front_ArticleModels();
        $this->template->links = $linksSEO->generateUrls()->fetchAssoc('id');
    }

//template
<a href="{link :Front:Articles:, $links[2]->url}">{$links[2]->popis}</a>

?>