Nepřemazávající se GET parametry
- exquis
- Člen | 83
Ahoj,
dělám vyhledávání mezi realitními nabídkami a řeším problém s vyhledáváním.
Mám vyhledávací formulář:
/** @persistent */
public $page;
/** @persistent */
public $type;
/** @persistent */
public $cities = array();
/** @persistent */
public $disposition = array();
public function renderNabidka() {
$seznam = $this->Nemovitosti->findNemovitosti($this->type, $this->cities, $this->disposition);
if ($this->getUser()->isLoggedIn()) {
$this->template->nemovitosti = $seznam;
} else {
$this->template->nemovitosti = $seznam->limit(2);
}
}
function createComponentSearchForm() {
$form = new Form();
$form->setMethod("GET");
$form->addSelect("t", "Typ", $this->Nemovitosti->getEstateType()->fetchPairs("id", "name"))->setValue(5);
$form->addMultiSelect("c", "Město", $this->Nemovitosti->getCities()->fetchPairs("id", "name"));
$form->addMultiSelect("d", "Dispozice", $this->Nemovitosti->getDispositions()->fetchPairs("id", "name"));
$form->addButton("save")->setOmitted();
$form->onSubmit[] = array($this, "handleSearch");
return $form;
}
V tomto formuláři by si uživatel měl navolit města, případně další parametry. Mezi nabídkami je možno listovat. Zároveň je požadavek, aby se parametry ukládaly do URL, aby bylo možné odkazovat na konkrétní stranu zasláním odkazu.
Vše funguje pouze při prvním vyhledávání. Jakmile použiji
vyhledávání poprvé, tak se vše zapíše do URL jak má. Routa vše zpracuje
a programově vyfiltruji inzeráty. Jakmile provedu druhé hledání, tak se
parametry z druhého hledání „přičtou“ k parametrům z prvního
hledání, namísto toho, aby je nahradili.
Pokud to tedy vypadá následovně:
1. hledání
TYP: Byt
MESTO: Pardubice
vyhledava: typ → byt, mesto → pardubice
2. Hledani
TYP: pozemek
MESTO: Praha
vyhledava: typ → byt, pozemek, mesto → pardubice, praha
Problém je zjevný… zároveň se mi ani nedaří nastavit defaultní parametry formuláře, aby po přechodu na jinou stránku zůstaly zobrazeny aktuálně filtrované parametry. I když zadám přímo setValue() s konkrétním ID (kdyby se náhodou nepřenášela data), tak hodnotu nepředvyplní.
První problém jsem zkoušel řešit pomocí persistentních parametrů, abych je nemusel na každé stránce obnovovat, ale nedaří se..
- Lukeluha
- Člen | 130
Co odesílat formulář klasicky postem a v handleSearch zpracovat hodnoty a ty poté přiřadit do jednotlivých persistentních parametrů?
Kdybys to chtěl nějak udělat pomocí getu, tak jména tvých formulářových polí se jmenují jinak než tvé persistentní proměnné, v tom případě se „nepropojí“.