Predani promenne z presenteru do sablony jine nez default.latte
- eressiel
- Člen | 5
Ahoj,
řeším už několik hodin takový problém, že chci předat z presenteru výsledek z databáze do jiné než defaultní šablony, ale stále se mi to nedaří.
// v presenteru presenters/HomepagePresenter.php
class HomepagePresenter extends BasePresenter {
protected function createComponentSearchBooksForm(){
...
$this->template->results = $this->users->searchBook($this->values['retezec']);
}
}
// šablona results.latte (templates/Homepage/results.latte)
{block content}
{foreach $results as $result} // tady to skončí tím, že proměnná results je nedefinovana
...
{/foreach}
V šabloně default.latte mohu k proměnné results přistoupit, ale nevím jak ji dostat do jiné šablony (ve stejné složce). Určitě je to jednoduché, ale nedaří se mi na to přijít ani najít nějakou ukázku. Díky.
EDIT: odpovědí na otázku je použití renderJmenoSablony()… Řeším teď ale ještě jeden problém, a to předání parametru této funkci, z nějakého důvodu se předává NULL z funkce reagující na stisk tlačítka formuláře.
Když mám funkci v HomepagePresenteru
renderResults(){
$this->template->results = select nad databazi;
}
Mohu nejak pridat této funkci parametr? Když se totiž pokusím o toto
renderResults($name){
$this->template->results = $this->users->db->query('SELECT * FROM titul WHERE nazev=?', $name)->fetchAll();
}
Tak se funkci renderResult záhadně předá NULL (alespoň podle nette debug
baru, ale vzhledem k tomu že se nic nenajde, tak to bude asi pravda).
Nicméně, jsem si jistý že funkci volám s řetězcem, který není
NULL.
Metodu renderResults volám v HomepagePresenteru ve funkci
public function searchBooksFormSubmitted(UI\Form $form)
{
$this->values = $form->getValues();
$this->renderResults($this->values['jmenoKnihy']);
$this->redirect('Homepage:results');
}
Editoval eressiel (20. 11. 2014 22:17)
- David Matějka
- Moderator | 6445
Trosku to rozepis – v jake metode presenteru to plnis? v jake „jine nez defaultni sablone“?
- Jan Tvrdík
- Nette guru | 2595
Budu hádat a tipnu si, že hledáš
{include sablona.latte, results => $results}
- eressiel
- Člen | 5
Nevím, jestli jsem to pochopil správně, zkusil jsem si přidat do šablony results.latte
{include default.latte, results => $results}
ale nepomohlo to.
Ale jak jsem se dival do dokumentace, tak si myslím, že to není úplně to co
hledám, protože tímto bych si includoval celý obsah dané šablony, nebo se
mýlím? Já jen potřebuji dostat se k proměnné $results.
Editoval eressiel (20. 11. 2014 20:07)
- MartinitCZ
- Člen | 580
Prosím projsi si quickstart, tam odpověd najdeš.
Editoval MartinitCZ (20. 11. 2014 20:13)
- eressiel
- Člen | 5
Prosím, mohl bych mít ještě dotaz?
Když mám funkci v HomepagePresenteru
renderResults(){
$this->template->results = select nad databazi;
}
Mohu nejak pridat této funkci parametr? Když se totiž pokusím o toto
renderResults($name){
$this->template->results = $this->users->db->query('SELECT * FROM titul WHERE nazev=?', $name)->fetchAll();
}
Tak se funkci renderResult záhadně předá NULL (alespoň podle nette debug
baru, ale vzhledem k tomu že se nic nenajde, tak to bude asi pravda).
Nicméně, jsem si jistý že funkci volám s řetězcem, který není
NULL.
Metodu renderResults volám v HomepagePresenteru ve funkci
public function searchBooksFormSubmitted(UI\Form $form)
{
$this->values = $form->getValues();
$this->renderResults($this->values['jmenoKnihy']);
$this->redirect('Homepage:results');
}
- Šaman
- Člen | 2666
Voláš ji špatně. Použij
<?php
$this->redirect('Homepage:results', $name);
?>
Ale tohle všechno je v základní dokumentaci, přečti si ji nejdřív.