Předání dat z obsluhy formuláře do šablony
- t_burger
- Člen | 8
Zdravim,
potreboval bych poradit, jak dostat promennou $searched_string do sablony search.latte. Vyhledavaci formular je v Homepage:default
v HomepagePresenter.php:
<?php
public function renderSearch() {
}
protected function createComponentSearchForm() {
$form = new UI\Form();
$form->addText('search_string', 'Vyhledat: ')
->addRule($form::FILLED, 'Prosím, vložte vyhledávaný řetězec!');
$form->addSubmit('send', 'Vyhledat');
$form->onSuccess[] = array($this, 'searchFormSubmitted');
return $form;
}
public function searchFormSubmitted(UI\Form $form) {
$values = $form->getValues();
$this->template->searched = $values->search_string;
$this->redirect("Homepage:search");
}
?>
pokud priradim search_string do $this->template->searched v metode searchFormSubmitted je v sablone search.latte nedostupna.
Dekuji za rady.
- Skippous
- Člen | 21
Do šablony to musíš poslat v metodě renderSearch(). Po odeslání tam přesměrováváš. Pro uchování hodnoty můžeš použít persistentní proměnou presenteru.
https://doc.nette.org/…n/presenters#…
Editoval Skippous (3. 2. 2014 15:03)
- t_burger
- Člen | 8
to Skippous: s tou persistentni promennou to funguje. Nefunguje ale, kdyz pres persistentni promennou potrebuju prenest vysledek db dotazu (objekt). Pises „muzes pouzit“. Existuje nejaky lepsi zpusob. Nechce se mi pouzivat public promennou. S nette zacinam, myslel jsem zda prommena nejde predat pres redirect do renderSearch().
Diky.
Editoval t_burger (3. 2. 2014 15:47)
- David Matějka
- Moderator | 6445
zadnej vysledek neprenasej, presmeruj s tim persistentnim parametrem a az pak vyhledavej.. (public property pouzij pro tohle bez obav)
- t_burger
- Člen | 8
matej21 napsal(a):
zadnej vysledek neprenasej, presmeruj s tim persistentnim parametrem a az pak vyhledavej.. (public property pouzij pro tohle bez obav)
Pred chvili jsem to udelal, jak pises, jeste nez jsem si to od tebe precetl a funguje :-). Diky za potvrzeni meho pristupu. Protoze s nette zacinam, jde mi taky o to nepochytit nejake spatne navyky.
Jeste poznamka, zkousel jsem do persistentni promenne dat pole a mel jsem problem, pak jsem narazil na toto:
UI\Presenter a Control cituji:
Presenter nyní zabraňuje, aby vám někdo podstrčil do persistentního parametru pole. Pokud ale pole chcete, uveďte ho jako výchozí hodnotu,