Odeslání formuláře do jiného presenteru/view

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

Zdravím,
mám jednoduchou továrničku na vyhledávací formulář.

public function createComponentSearchForm() {
	$form = new AppForm;
	$form->addText('q', 'Hledej:');
	$form->addSubmit('search', 'Hledej');
	$form->onSubmit[] = callback($this, 'searchFormSubmitted');
	return $form;
}

Mám ji v basePresenteru a potřebuju poslat formulář na zpracování do Search:default.

Funkce searchFormSubmitted vypadá následovně.

public function searchFormSubmitted($form) {
	$values = $form->values;
	$this->redirect("Search:default $values->q");
}

Hlásí mi to. „No route for Search:default ()“

Předpokládám, že mi chybí routa (ale nevím jaká) nebo že mám špatně redirect v searchFormSubmitted() nebo bych měl změnit callback v továrničce, ale neznám správnou verzi ani jednoho.

Prosím o radu, jak hledaný řetězec (potažmo celý formulář) poslat do jiného prezenteru. Díky!

pekelnik
Člen | 462
+
0
-
<?php
// SearchPresenter
public function renderDefault($q)
{
	// ...
}
// BasePresenter
public function searchFormSubmitted($form)
{
	$this->redirect("Search:default", $form->values->q);
}
?>

Editoval pekelnik (29. 9. 2010 2:17)

ruff
Člen | 11
+
0
-

Přesně takto jsem to zkoušel, a teď zkouším znovu, ale nefunguje.
Formulář se přesměruje, jsem na adrese /document_root/search/ (bez parametrů) a hodnota $qrenderDefault($q) je NULL.

Jakoby vše ok, jen se nepošle hodnota. Kde může být chyba?

_Martin_
Generous Backer | 679
+
0
-

Není náhodou $form->values pole? Zkus $form->values['q'].

ruff
Člen | 11
+
0
-

Výborně, vyřešeno, díky!