Po vybrání položky ze selectboxu předej data z Ajax do presenteru
- frantisek.kasa
- Člen | 7
Zdravím všechny,
nějakou chvíli řeším, aby se po vybrání položky ze selectboxu poslaly
data pomocí Ajaxu do presenteru.
Presenter data zpracuje a předá do databáze, která provede řazení
položek.
Problém mám v tom, že nedokážu odchytnout poslaná data z Ajaxu.
Nejspíš problém, že se překreslí jinou metodou, takže se ty data
ztratí.
Aplikaci mám nahranou na githabu:
https://github.com/…public_html/
V šabloně campaign/default.latte mám script:
https://github.com/…efault.latte
<script>
$('#frm-sortForm').change(function () {
$.nette.ajax({
url: {link default},
data: {
'sortData': {
'name': $('#frm-sortForm-name').val(),
'cost': $('#frm-sortForm-cost').val()
}
}
});
});
</script>
V presenteru campaignPresenter:
https://github.com/…resenter.php
– Formulář:
<?php
// return App\Forms\SortFormFactory
protected function createComponentSortForm()
{
$sorting = ['ASC' => 'Vzestupně', 'DESC' => 'Sestupně'];
$this->sortFactory->setSortData($sorting);
return $this->sortFactory->create();
}
?>
– Zpracování:
– – Zkoušel jsem pomocí handleSort, ale překreslí to metoda
actionDefault
<?php
public function handleSort(array $sortData)
{
// TODO: prázdná data
$this->ajaxData = $this->getHttpRequest()->getRawBody();
$this->ajaxData = $sortData;
if ($this->isAjax())
{
// překreslení objektu
$this->redrawControl('campaignList');
}
}
?>
– – použití metody actionDefault, taky se překreslí, data ztracena
<?php
public function actionDefault($customerId, array $sortData)
{
parent::loadState($this->getParameters());
$this['breadcrumb']->addLink('Účty', $this->link('Account:'));
$this['breadcrumb']->addLink('Kampaně');
// TODO: prazdna data
$this->ajaxData = $this->getHttpRequest()->getRawBody();
$this->ajaxData = $sortData;
}
?>
Prosím o jakoukoliv radu, která mě dostane z tohoto problému.
Soubory, na které se tento problém vztahuje:
Presenter – https://github.com/…resenter.php
Šablona – https://github.com/…efault.latte
Továrnička – https://github.com/…mFactory.php
Editoval frantisek.kasa (11. 5. 2017 15:10)
- GEpic
- Člen | 566
V tom JS nedávej link default
ale přímo link na signál
handleSort {link sort!}
.
Taktéž změň v signálu název parametru, aby nekolidoval s actionDefault parametrem (sortData)
Zkoušel jsem pomocí handleSort, ale překreslí to metoda actionDefault
Action se provádí dřív než Handle
Editoval GEpic (11. 5. 2017 20:47)
- frantisek.kasa
- Člen | 7
Zkoušel jsem změnit parametry v metodách i použít signál handleSort() a je to stejné, jako zde (obrázek) https://github.com/…ort-ajax.PNG. Ajax předá do url vybraná data, ale pak ji překreslí znovu ta stejná metoda.