Ako prekresliť snippet po odoslaní dát cez ajax

KristianSubweb
Člen | 146
+
0
-

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
+
0
-

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
+
0
-

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. :/

CZechBoY
Člen | 3608
+
0
-

V presenteru mate nejaky funkce? Co je prehodit do modelu?