Filter kategorií cez checkboxy

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

Čaute, v db mám uložený zoznam kategórií a trade,ktorý každý má svoj určenú kategóriu.

<?php
public function renderDefault($category = 'all',$page = 1) {
        //$this->database->table->
        if ($category == 'all') {
            $paginator = new Nette\Utils\Paginator;
            $table = $this->database->table('trade');
            $paginator->setItemCount(count($table)); // the total number of records (e.g., a number of products)
            $paginator->setItemsPerPage(5); // the number of records on page
            $paginator->setPage($page); // the number of the current page (numbered from one)
            $this->template->pageNavigator = $paginator;
            $this->template->trades = $this->database->query('SELECT * FROM trade ORDER by date DESC');
        } else {

        }
    }

?>

Dalej mám formular, ktory mi vykresli checkbox pre každú kategóriu :

<?php

        protected function createComponentGetCategory($name) {
            $categories = $this->database->table('categories')->fetchAll();
            $form = new Nette\Application\UI\Form();
            foreach ($categories as $category) {
                $form->addCheckbox($category->id, $category->name);
            }
            $form->addSubmit('Vyhledat');
            return $form;
        }
?>

Ako mám validáciu formulára aby som vedel, ktoré kategórie užívateľ vybral a chce mať filtrované ?

David Matějka
Moderator | 6445
+
0
-

Od nette 2.1 je k dispozici CheckboxList (addCheckboxList), ktery resi to, co potrebujes

Baski
Člen | 12
+
0
-

Idem to skúsiť ďakujem

Baski
Člen | 12
+
0
-

Mám vyriešené vykreslovanie a získavanie kategórii do array

<?php
protected function createComponentGetCategory($name) {
        $categories = $this->database->table('categories')->fetchAll();
        $form = new Nette\Application\UI\Form();
        $from = array();
        foreach ($categories as $category) {
            $from[] = $category->name;
        }
        $form->addCheckboxList('categories', 'Vyberte:', $from)
                ->addRule(Nette\Application\UI\Form::MIN_LENGTH, 'Vyberte aspoň jednu možnost', 1);
        $form->addSubmit('Vyhledat');
        $form->onSuccess[] = $this->getCategorySucceeded;
        return $form;
    }

    public function getCategorySucceeded($form) {
        $values = $form->getValues();
        $this->redirect('this', $values);
    }
?>

Ako predám array parameter do metódy RenderDefault()?

Mysteria
Člen | 797
+
0
-
public function renderSomething(array $arrayParam) { }