Dotaz ohledně handleru…
- diablos
- Člen | 36
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
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.
- Ondřej Mirtes
- Člen | 1536
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
taky by se dalo mno =) jsem nestudoval kód a jenom napsal nejrychlejší řešení co mě z hlavy napadlo =)