Dotaz ohledně handleru…

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

Zdravím, chtěl bych se zeptat, jestli lze v presentru vytvořit proměnnou stylem „$this->template->form = $searchBar“ a pak jí v handleru z templatu vytáhnout „$searchBar = $this->template->form“. Mám totiž problém s AJAXovým výpisem formuláře. Po vybrání v select boxu se má vybrat z DB druhý select box, podle určitých pravidel. Jenže když se spustí AJAXová fce a pak dotyčný handler, firePHP mi vyplivne, že hadnler nemůže najít požadovanou proměnou v teplatu.

(Notice: The variable ‚searchBar‘ does not exist in template. in C:\wamp\www\hicars.cz\libs\Nette\Templates\BaseTemplate.php on line 313)

Část kódu :

public function renderDefault() {
        $searchBar = $this->getComponent('searchBar');
        $this->template->searchBar = $searchBar;
    }

    public function handleLoadData($phase, $value)  {
           $searchBar = $this->template->searchBar;

            if ($phase == 1) {
                    // naplníme select box prvky a vypíšeme na výstup
                    $searchBar['kind']->setItems(array('NULL' => 'typ'));
                    echo $searchBar['kind']->getControl();
            }

            // konec zpracování
            $this->terminate();
    }
JakubKohout
Člen | 92
+
0
-

no dle vývoje presenteru (https://doc.nette.org/…n/presenters) je handle dřív než render, tak proto. Řešení je posunout to z render do action.

diablos
Člen | 36
+
0
-

Velmi děkuji. Vše běží jak má!

Ondřej Mirtes
Člen | 1536
+
0
-

To to nevyřeší:

public function handleLoadData($phase, $value)  {
           $searchBar = $this->getComponent('searchBar');

            if ($phase == 1) {
                    // naplníme select box prvky a vypíšeme na výstup
                    $searchBar['kind']->setItems(array('NULL' => 'typ'));
                    echo $searchBar['kind']->getControl();
            }

            // konec zpracování
            $this->terminate();
    }

?

JakubKohout
Člen | 92
+
0
-

taky by se dalo mno =) jsem nestudoval kód a jenom napsal nejrychlejší řešení co mě z hlavy napadlo =)