Předání GET parametrů do odkazu

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

Zdravím,

mám ručně vykreslovaný vyhledávací formulář s x položkami a odesílám jej metodou GET. Zároveň mám v tomto formuláři i odkazy (které slouží jako přepínače např z www.neco.cz/…vani/nabidka na www.neco.cz/…ani/poptavka).

A teď bych rád, do těchto odkazů po odeslání formuláře přidal i ony GET parametry (odkaz by pak měl vypadat např: www.neco.cz/…vani/nabidka?…).

Napadlo mě, předat do šablony parametry:

public function renderDefault(){
    $this->template->formset = $this->getParameter();

}

a v šablony vytvořit odkaz:

<a n:href="Search:offer, $formset">Offers</a>

Jenže narážím na logický problém:

Passed more parameters than method FrontModule/SearchPresenter::actionOffers() expects.

Věřím, že existuje nějaký hezký způsob jak GET parametry předat.

mkoubik
Člen | 728
+
0
-
  1. Doporučil bych ti ten formulář místo GETem posílat POSTem, u GETu nemůžeš používat router.
  2. Při zpracování formuláře si nastav persistentní parametry a přesměruj na $this->redirect('this') nebo kam potřebuješ (parametry už předávat nemusíš).

Editoval mkoubik (27. 8. 2013 14:25)

omachala
Člen | 20
+
0
-

Zkusil jsem to, jak říkáš. Odeslal formuláře přes POST a pokusil se vytvořit a po odeslání naplnit persistentní parametr a přesměrovat:

class SearchPresenter extends \BasePresenter {

	public $q;
...

a při zpracování formuláře:

public function searchFormSubmitted(Form $form){

        $data = $form->getValues();
        $this->q = $data->q;
        $this->redirect('this');

Přesměruje se bez předání parametru v GET a když před přesměrováním dumpuji $this->getPersistentParams() vrací prázdné pole ..?

jiri.pudil
Nette Blogger | 1032
+
0
-

Anotace @persistent ti vypadla jen při přepisu sem do fóra, nebo ti chybí i v kódu?

omachala
Člen | 20
+
0
-

Chyběla v kódu! Díky. Nenapadlo mě, že komentář může mít vliv …

jiri.pudil napsal(a):

Anotace @persistent ti vypadla jen při přepisu sem do fóra, nebo ti chybí i v kódu?