Předání GET parametrů do odkazu
- omachala
- Člen | 20
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
- Doporučil bych ti ten formulář místo GETem posílat POSTem, u GETu nemůžeš používat router.
- 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
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
Anotace @persistent
ti vypadla jen při přepisu sem do fóra,
nebo ti chybí i v kódu?