Vyhladavaci formular v datagridovej komponente
- dobby
- Člen | 10
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;
}
}
?>