Render metoda pro vloženy latte subor

- Baski
 - Člen | 12
 
Čaute mám vytvoreny sidebar.latte. Tento latte subor includujem vo
viacerých iných templatoch.
Zatial je tam všetko písané staticky.
našiel som že
<?php
{include sidebar.latte, foo => $params['foo'], bar => $params['bar']}
?>
To by som musel vždy v konkretnej metode vytahovat veci z db. Skúšal som
vytvoriť
HomepagePresenter.php
<?php
 public function renderSidebar(){
        $this->template->city = $this->database->query('SELECT users.city,count(trade.id) as num FROM trade JOIN users ON(trade.username=users.id) GROUP BY users.city');
    }
?>
so sidebar.latte nachádza sa v zložke Homepage
<?php
<div class="sidebar">
    <p>Mestá</p>
    <div>
        <div n:foreach="$city as $c">
            <p>{$c->city} ({$c->num})</p>
        </div>
    </div>
    <p></p>
    <div></div>
</div>
?>
Avšak to mi vyhodilo Undefined variable: city
Je nejaký spôsob ako renderovať túto čast templatu samostatne ?

- Tomáš Votruba
 - Moderator | 1114
 
Vytvoř si komponentu sidebar a přesuň logiku tam.
Pak ji můžeš kdekoliv vypsat pomocí:
{control sidebar}
					Editoval Tomáš Votruba (5. 7. 2014 0:34)

- Baski
 - Člen | 12
 
Chápem dobre, teda že si vytvorím funkciu public function
createComponentSidebar()
s telom niečo ako <?php
$template = $this->template;
$template->setFile( ‚../templates/Homepage/sidebar.latte‘);
// vložíme do šablony nějaké parametry
$template->param = $this->database->query(‚SELECT
users.city,count(trade.id) as num FROM trade JOIN users
ON(trade.username=users.id) GROUP BY users.city‘);
// a vykreslíme ji
$template->render(); ?>

- Tomáš Votruba
 - Moderator | 1114
 
Přesně tak. Zkus ji vytvořit včetně šablony. Pokud ti něco nepůjde,
ptej se.
Inspirovat se můžeš na příkladu
minisite
Kód v komentářích zkus obarvovat, lépe se to čte.