Nette Form + AJAX Selectbox + Snippet
- Joacim
- Člen | 229
Ahoj,
mám formulář s 2 selectboxy, které jsou na sobě závislé (druhý je zavislý na prvním). Tzn vyberu hodnotu z prvního a AJAXEM se mě dotáhnou hodnoty do druhého. Mám nette 2.3. Výběr a překreslení funguje dobře, bohužel při zmáčknutí submitu se vůbec nedostanu do Succeeded, jen se refreshne stránka. Data z obou formulářů se přes redirect pošlou do URL a poté pokud je URL obsahuje nastaví se jako výchozí v již zminovaných selectboxech.
<div class="col-lg-12">
{snippetArea wrapper}
<form class="" role="" id="" action="" method="post" n:name="xxxSearchForm">
<input type="hidden" n:name="tab">
<div class="form-group">
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-barcode"></i> {_ xxx}</span>
<div class="icon-addon addon-lg">
<select id="eqp-pre" class="form-control" n:name="eq"></select>
</div>
<span class="input-group-addon">_</span>
<div class="icon-addon addon-lg">
{snippet sufix}
<select id="" class="form-control" n:name="sufix"></select>
{/snippet}
</div>
<span class="input-group-addon"> </span>
<span class="input-group-btn">
<button class="btn btn-primary wait-search" type="submit" id="btn"><span class="glyphicon glyphicon-search"></span></button>
</span>
</div>
</div>
</form>
{/snippetArea}
Handle pro AJAX
public function handleEqpPrefix($eqp) {
if ($this->isAjax()) {
$data = $nastenidatsDB;
$this['xxxSearchForm']['sufix']->setItems($data);
$this->redrawControl('sufix');
$this->redrawControl('wrapper');
}
}
Succeeded
public function xxxSearchFormSucceeded(Form $form, $values) {
try {
$id = $necozformu;
$this->redirect(":xxx", array('tab' => $values->tab, 'id' => $id));
} catch (AuthenticationException $e) { // Invalid login
$this->flashMessage($e->getMessage(), "danger");
$this->redirect(":Home:default");
}
}
Pokud jsem nepoužil snippetArea tak jsem vždy dostal chybu end()
expects parameter 1 to be array, null given pro suffix
Nějaké rady či nápady ? Případně řešení které používáte a
funguje ?
Přetane fungovat i JS, který pouštím a je vázán na ID select boxu
Editoval Joacim (5. 6. 2018 13:05)
- Ondřej Kubíček
- Člen | 494
osobně doporučuji využit již hotové řešení, třeba dependent select box https://componette.org/…ntselectbox/
- Joacim
- Člen | 229
Ondřej Kubíček napsal(a):
osobně doporučuji využit již hotové řešení, třeba dependent select box https://componette.org/…ntselectbox/
Nad tím jsem taky uvažoval, ale potřebuji to využít jen na jednom místě a stačilo by mě rozchodit ta moje varianta