Ako prekresliť snippet po odoslaní dát cez ajax
- KristianSubweb
- Člen | 146
Ahojte chcel by som sa opýtať ako viem prekresliť snippet, poprípadé či to nejde zavolanim konkrétneho handleru ktorú má prekresliť samotný snippet.
Takto to vyzerá v kóde:
$(".btn-add-ajax").on("click", function () {
var $inputs = $('.addRecordForm :input');
var values = {};
$inputs.each(function() {
values[this.name] = $(this).val();
});
$.nette.ajax({
url: {link :Admin:Cars:Rest:AddTachometerRecordForm},
data: {
"carId": values.carId,
"actualKm": values.actualKmAjax
}
})
});
Toto je action kde posielam dáta:
public function actionAddTachometerRecordForm($carId, $actualKm) {
$car = $this->carsService->getByIdAndCompany($carId, $this->user->getCompanyId());
$tachometer = new Tachometer();
$tachometer->setCars($car[0]);
$tachometer->setActualKm($actualKm);
$tachometer->setUser($this->user->getEntity());
$this->tachometerService->insert($tachometer);
$this->handleChangeTachometer($car[0]->getId());
$this->payload->data = Json::encode($tachometer);
$this->sendPayload();
}
A takto vyzerá handler ktorý má na starosti prekreslenie toho snippet modalu.
public function handleChangeTachometer($carId) {
if ($this->isAjax()) {
$this->template->carsTachometerHistory = $carId;
$tachometerData = $this->carsService->getKmHistoryForCar($carId, $this->user->getCompanyId());
if ($tachometerData) {
$tachometerAllData = $this->tachometerService->getAllTachometerData($carId);
$car = $this->carsService->getByIdAndCompany($carId, $this->user->getCompanyId());
$this->template->car = $car;
$this->template->allTachometerData = $tachometerAllData;
$this->template->tachometerData = $tachometerData;
$this->redrawControl("zmenaData");
} else {
$this->redirect(":Admin:Cars:Cars:");
}
$this->redrawControl("changeTachometer");
}
}
Ako je vidieť za ten hadle má aj vstupný parameter carId tak som
predpokladať že ak v tej action
zavolam $this->handleChangeTachometer($carId) a ešte by som chcel dodať že
tá actionAddTachometerRecordForm nieje súčastou presentéru kde je aj ten
handler a tak kde je tá action metoda tak ešxtendujem presenter kde je ten
hadleChange
- David Matějka
- Moderator | 6445
zavolanim $this->sendPayload();
ukoncis beh presenteru a
nedojde k vyjkreslovani sablony (a tedy ani k prekresleni snippetu)
vykasli se na to harakiri s dedenim
ešte by som chcel dodať že tá actionAddTachometerRecordForm nieje súčastou presentéru kde je aj ten handler a tak kde je tá action metoda tak ešxtendujem presenter kde je ten hadleChange
a volej ajaxem ten handleChangeTachometer signal. (s tim, ze tam pridas tu logiku z „Rest“ presenteru (respektive ji extrahujes do nejakyho modelu))
- KristianSubweb
- Člen | 146
David Matějka napsal(a):
zavolanim
$this->sendPayload();
ukoncis beh presenteru a nedojde k vyjkreslovani sablony (a tedy ani k prekresleni snippetu)vykasli se na to harakiri s dedenim
ešte by som chcel dodať že tá actionAddTachometerRecordForm nieje súčastou presentéru kde je aj ten handler a tak kde je tá action metoda tak ešxtendujem presenter kde je ten hadleChange
a volej ajaxem ten handleChangeTachometer signal. (s tim, ze tam pridas tu logiku z „Rest“ presenteru (respektive ji extrahujes do nejakyho modelu))
No chcel by som to nechať v tom presentéri kedže tam máme všetky rest funkcie k vozidlám. A ten Rest dedí DefaullPresenter. :/