Vyhladavaci formular v datagridovej komponente

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

Zdravim vsetkych,
snazim sa napisat vlastnu uplne jednoduchu DataGrid komponentu. Zatial sa mi vsetko podarilo, ale lamem si hlavu nad tym, ako do vo filtrovacom formulari nastavit onSuccess, dostal som sa do stavu, kedy pri vykreslenom formulari je atribut action prazdny (<form action="" method="post">).

Ak to spravne chapem, tak pri vytvarani instancie formularu Nette\Application\UI\Form sa do onSuccess pise nazov metody, ktora sa ma vyvolat po odoslani formulara, pricom tato metoda ma byt definovana v tej istej triede, ako je tvoreny formular (teda v mojom pripade obidve su v HomepagePresenter). Preco je ten action stale prazdny?

Za kazdu pomoc vopred som velmi vdacny.

Prezenter:

<?php
public function createComponentGridCennik() {

	if ($this->ktore == "lacne") {
		$data = $this->data->nazovFilter($this->nazovZacina)->vypisLacne();
	}
	elseif ($this->ktore == "drahe") {
		$data = $this->data->nazovFilter($this->nazovZacina)->vypisDrahe();
	}
	else {
		$data = $this->data->nazovFilter($this->nazovZacina)->vypisVsetko();
	}

	$component = new MisoGridHomepage;
	$component->addColumn('id', 'Číslo')->addColumn('nazov', 'Názov položky')
		->addColumn('cena', 'Jednotková cena', 'eur')/*->addRefColumn('kategorie', 'kategoria', 'kategorie_nazov', 'Kategória')*/;
	$component->addRowOptions('edit!', 'Upraviť', 'pencil.png');
	$component->addRowOptions('delete!', 'Zmazať', 'delete.png');
	$component->setRowId('id');
	$component->setData($data);

	$form = new Nette\Application\UI\Form;
	$form->addSelect('cena', 'Ktore vypisat?', array('lacne'=>'Lacné (do 1 €)', 'drahe'=>'Drahé (nad 1 €)', 'vsetko'=>'Všetko'))->setPrompt('Vyber si cenu');
	$form->addText('nazov', 'Názov začína na:');
	$form->addSubmit('filterSubmit', 'Vypisat');
	$form->addSubmit('filterCancel', 'Zrusit filter');
	$form->onSuccess[] = $this->filterFormSubmitted;

	$component->setFilter($form);

	return $component;
}
?>

Problem je v tom, ze tato metoda (tiez v prezenteri) sa ako keby ani nezavolala – je tam aj teraz testovaci dump() a nic to nevypisalo (ani NULL)

<?php
public function filterFormSubmitted(Nette\Application\UI\Form $form) {
	$values = $form->getValues();
	dump($values);
	return true;
	$ktore = $values['cena'];
	switch ($ktore) {
		case "lacne":
		case "drahe":
			$this->ktore = $ktore;
			break;
		default:
			$this->ktore = NULL;
			break;
	}
	$nazov = $values['nazov'];
	if ($nazov != NULL) {
		$this->nazovZacina = $nazov;
	}
}
?>