Změna obsahu v závislosti na vybraných checkboxech
- .:M@rt!n:.
- Člen | 201
Ahoj,
na webu mám z databáze vypsané údaje z jedné tabulky pomocí metody
renderDefault(). Chtěl bych nad tyto údaje umístit checkboxy, které budou
představovat filtraci dat pod nimi. Problém je v tom že moc nevím jak na
to… Proto bych chtěl poradit o nasměrování. Předpokládám že budu
muset vytvořit formulář s těmi checkboxy (to je v pohodě), ale jak
zajistit že po jejich zašktnutí se mě obsah v divu překreslý podle
vybraného checkboxu?
Díky
- petr.pavel
- Člen | 535
Zajaxovat formulář s checkboxy, přidat jim on click = submit a data pod nimi definovat jako snippet. Předpokládám, že jsem to na tebe vzal moc hopem, tak se ptej. O AJAXu, snippetech a Nette najdeš kapitolu v dokumentaci.
- .:M@rt!n:.
- Člen | 201
tak jsem se do toho konečně pustil… formulář mám hotový, checkoby vypsané v šabloně. Ted mě není moc jasný ten onlick. Mohl by si prosim dat kratkou ukazku?
EDIT: Ještě přidám co mám hotovo. Js soubor s ajaxem přilinkovany v hlavičce. V presenteru kde taham data k překreslení mám:
public function renderDefault() {
$this->template->firm = $this->firmRepository->findAllFirm($this->user->getId());
$this->template->firmTop = $this->firmRepository->findFirmTop($this->user->getId());
$this->template->firmGold = $this->firmRepository->findFirmGold($this->user->getId());
$this->template->all = $this->firmRepository->countAllFirm($this->user->getId());
$this->template->top = $this->firmRepository->countTopFirm($this->user->getId());
$this->template->gold = $this->firmRepository->countgoldFirm($this->user->getId());
$this->template->premium = $this->firmRepository->countPremiumFirm($this->user->getId());
$this->template->free = $this->firmRepository->countFreeFirm($this->user->getId());
}
protected function createComponentFilterForm() {
$form = new Form();
$form->addCheckbox('gold', 'firmy GOLD')
->setAttribute('onclick', 'submit()');
$form->addCheckbox('top', 'firmy TOP');
$form->addCheckbox('premium', 'firmy PREMIUM');
$form->addCheckbox('free', 'firmy ZADARMA');
return $form;
}
public function filterFormSubmitted(Form $form) {
if (!$this->isAjax()) {
$this->redirect('this');
} else {
$form->setValues(array(), TRUE);
$this->invalidateControl('form');
$this['summary']->invalidateControl();
}
}
a v latte data vypisuji do tabulky pomocí foreach. Po zaškrnutí checkboxu GOLD by se měli vykreslit pouze ty firmy gold které mám vytáhnutý z db v renderDefault(). Invalidovat se má konkrétně co?
Editoval .:M@rt!n:. (10. 12. 2013 14:11)