Návrat na výsledky hledání

- kolaloka
 - Člen | 71
 
Prosím pomozte mi nastavit návrat na vyhledávání.
Mám advanced search s mnoha hodnotami, který se zpracuje a vyplivne seznam
výsledků.
Když v seznamu výsledků rozkliknu jeden výsledek, není se jak vrátit
zpět.
Vyčetl jsem, že si mohu výsledek zapsat do Session. Ale nedokážu si
představit jak konkrétně to zapsat a kam.
Můj kód vypadá takhle:
Presenter:
<?php
	protected function createComponentAdvancedSearchForm() {
		$form = new Form;
		$form->addText('firstname', 'Křestní jméno:');
		$form->addText('surname', 'Příjmení:');
		$form->addText('surnames', 'Příjmení (jiné tvary):');
		...
		$form->addText('startPyear', 'Rok profese mezi rokem:');
		$form->addText('endPyear', 'a rokem:');
		$form->addSubmit('send', 'Hledat');
		$form->onSuccess[] = [$this, 'AdvancedSearchFormSucceeded'];
		return $form;
	}
	public function advancedSearchFormSucceeded($form, $values) {
		if (isset($values->firstname)) {
			$firstname = $values->firstname;
		} else {
			$firstname = "";
		}
		if (isset($values->surname)) {
			$surname = $values->surname;
....
		if (($values->startDday>0) && ($values->endDday> 0)) {
			$startDday = $values->startDday;
			$endDday = $values->endDday;
		} else {
			$startDday= "-1";
			$endDday = "32";
		}
		$this->template->klient = $this->database->table('nekrolog')
			->where('firstname LIKE ?', '%' . $firstname . '%')
			->where('surname LIKE ?', '%' . $surname . '%')
			->where('surnames LIKE ?', '%' . $surnames . '%')
...
			->where('dday>= ? AND dday<= ?', $startDday, $endDday)
			->order('id DESC');
		return $this->template->klient;
	}
	public
		function renderAdvanced($search) {
		$this->template->loginstatus = $this->logInCheck();
                                $this->template->search = $search;
	}
?>
výsledek se rendruje takhle:
<?php
	{foreach $klient as $post}
			<div class="prispevek">
				<tr><td>{$post->dday}.{$post->dmonth}.{$post->dyear} {$post->dplace}
					<a n:href="Klient:show $post->id"><b>{$post->title} {$post->firstname} {$post->surname}</b></a>
				</td></tr>
			</div>
		{/foreach}
?>
A jednotlivý rozklik přes Klient:show vyplivne:
<?php
<table>
	    <tr><td><td><b>{$klient->surname} {$klient->surnames} {$klient->firstname} </b></td></tr>
</table>
<a href = "javascript:history.back()">Back to previous page</a>
?>
No a tady přes to „back to…“ se bohužel k výsledku bez reloadu stránky nevrátím… :-(
Help, kdo mi pomůůůžeeeee?

- Ondřej Kubíček
 - Člen | 494
 
- ten dotaz na databázi bys měl mít v nějaké modelové vrstvě, ne přímo v komponentě
 - jak se pracuje se sessionama v nette najdeš tady https://doc.nette.org/…ttp/sessions, uloží si tam ty věci z filtru $fisrtname atd… a zkontroluješ jestli máš v session ten filtr, a použiješ hodnoty z něj, né z inputu
 

- kolaloka
 - Člen | 71
 
Děkuju za rychlou odpověď,
nicméně pořád mi není jasné, jak načtu do session ten výsledek z postu?
Ve které chvíli? Patřilo by to sem takhle?
<?php
    public
        function renderAdvanced($search) {
        $this->template->loginstatus = $this->logInCheck();
        $this->template->search = $search;
        $session->start()
        $section->vysledek = $search;
    }
?>
				
- Ondřej Kubíček
 - Člen | 494
 
$session->start() tam nemusíš mít, startuje to samo,
díval ses na tu dokumentaci?
tak do session to uložíš tam kde zpracováváš ten form, tudíž v té
tvojí advancedSearchFormSucceeded
public function advancedSearchFormSucceeded($form, $values)
{
	$session->filter = ['username' => $values->username, ...];
}