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
Č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
Od nette 2.1 je k dispozici CheckboxList (addCheckboxList), ktery resi to, co potrebujes
- Baski
- Člen | 12
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()?