Změna obsahu v závislosti na vybraných checkboxech

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

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
+
0
-

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
+
0
-

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)