Zum Inhalt springen

Sortieren von Datensätzen mit AJAX

Erstellt am 22. Juni 2011 · 1 Antwort · letzte Antwort am 22. Juni 2011

Tags: JavaScript & AJAX, Frage

zappzarapp ·

Hallo,

ich habe eine Liste die mit jQuery.sortable() per Drag&Drop sortiert werden kann. Wenn man ein Element verschoben hat, dann wird ein AJAX Request ausgeführt der in meinem Controller die "sort"-Action aufruft:

/index.php?id=195&type=42&tx_feusernewsadmin_pi1[action]=sort&tx_feusernewsadmin_pi1[controller]=Images&tx_feusernewsadmin_pi1[order]=image-63,image-52,image-64

Der Controller wird auch korrekt aufgerufen, allerdings ist mir jetzt nicht ganz klar wie ich jetzt am besten das Feld "sorting" ändere. Bis jetzt habe ich das hier:

/**
 * 
 * @param string $order
 * 
 * @return void
 */
public function sortAction($order) {
	$aImages = explode(',',$order);
	$i=1;
	foreach ($aImages as $sImage) {
		$aTmp = explode('-',$sImage);
		$uid = $aTmp[1];
		$oImage = $this->imagesRepository->getByUid($uid);
		//print_r($oImage);
		$oImage->setSorting($i);
		$i++;
	}
}

Was aber natürlich nicht funktioniert, da setSorting ja keine Funktion des Repository sondern eine Funktion des Model ist. Gibt es eine Möglichkeit das Model zu laden mit der entsprechenden UID oder muss ich im Repository mit SQL die Änderung durchführen?
Oder wäre es möglich, dass der Parameter $order ein Array von Tx_FeuserNewsadmin_Domain_Model_Images ist?

lg Matthias

zappzarapp ·

Hallo,

ihr seid einfach zu langsam 😉 😃

Hatte vorher eine eigene Funktion "getByUid" die eben kein Model zurückgegeben hat. Mit der Standard-Funktion findByUid($uid) bekomme ich ein Model und kann mit ->setSorting und ->update die Sortierung ändern.

public function sortAction(array $order) {
	$i = 1;
	foreach ($order as $uid) {
		$oImage = $this->imagesRepository->findByUid($uid);
		$oImage->setSorting($i);
		$this->imagesRepository->update($oImage);
		$i++;
	}
}

lg Matthias