Jak správně na filtrování dat?

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

Zdravím,

Nette 2, PHP 5.3.

Mám následující třídu:

<?php

<?php

namespace FrontModule;

class SearchPresenter extends BasePresenter {

    private $type;

    public function startup() {
        parent::startup();
    }

    public function actionDefault($type) {

        $this->type = $type;
        $this->template->type = $this->type;

    }

    public function createComponentMainSearch($name) {
        new \FrontModule\Forms\Search\MainSearch($this, $name);
    }

    public function createComponentList() {

        $schools = $this->model->school->getSchools($this->type);

        $list = new \SchoolList();
        $list->limit = 15;
        $list->source = $schools;

        return $list;

    }

}

?>

Třída obsahující formulář MainSearch, je klasický zpracování, callback je ve stejné třídě.

Na základě vyhodnocení formuláře bych potřeboval upravit source SchoolListu.

Jaký je optimální způsob?

Díky moc.

MW
Člen | 626
+
0
-

Tak treba:

// ziskas parametr
$search = $this->getParam("search", false);

//posleme do listu parametr $search
public function createComponentList($search = null) {...}

a v modelu:

if ($search) {... ziskas filtrovana data}

Editoval MW (29. 9. 2011 8:29)

wise
Člen | 161
+
0
-

v případě, že je těch parametrů, podle kterých se může filtrovat (inputů, selectů,…) třeba 5, je toto ideální způsob i pro tento případ?

wise
Člen | 161
+
0
-

Nebude v public function createComponentList($search = null) {...} v $search „list“, resp. název komponenty?

MW
Člen | 626
+
0
-

Muzes z toho udelat pole a nebo poslat vice parametru…
Je to jen nazev input pole… takze klidne $find .. to byl jen nastrel..

wise
Člen | 161
+
0
-

Jak předám do té komponenty ty parametry?

MW
Člen | 626
+
0
-

Nejsem si ted jisty, jestli to takto lze poslat do komponenty.
Ale v kazdem pripade ziskat $search/$find v komponente lze pres getParam(„search“).

Ted koukam, ze jsem to napsal blbe.. ten parametr $search ci $find, jak chces, predavas do metody, ktera ziskava data… do komponenty to ani nepotrebujes predat takto.

Editoval MW (29. 9. 2011 9:40)

bojovyletoun
Člen | 667
+
0
-

nevím, kde se pořád berou ty nesmysly s createComponentList($nejakeJIneparametry) **!!!* metoda je vždy volána s jedním parametrem a to je jméno vytvářené komponenty (což je spíš z praktického důvodu rychlejšího zápisu, abychom nemuseli pořád jméno lovit jako substr(__FUNCTION__,15))

příkladů, jak předat komponentě parametr je hafec na foru, stačí hledat.funct creaCoList{$x=new List;$x->param1="mujParam";return $x;} . Nebo je možné komponentě předat parametr při renderování. Viz dokumentace → komponenty ->továrničky