Zum Inhalt springen

Extbase Extention - index Ausgabe sortieren

Erstellt am 13. Oktober 2010 · 2 Antworten · letzte Antwort am 9. Dezember 2010

Tags: Fluid, Frage

reginaldo ·

Hallo allerseits,

ich versuche meine erste Extention (überhaupt) zu erstellen und habe mich deswegen in die Extbase Dokumentation von Mittwald (http://www.mittwald.de/extbase-dokumentation/) eingelesen und auch schon mit ein paar Mini-Extentions experimentiert.

Ich versuche grade ein wahrscheinlich recht banales Problem zu lösen:

In meinem Frontend gebe ich eine simple Liste mit der indexAction() aus:

number....name....type

..1............nameX...type1
..2............nameY...type2
..3............nameZ...type1

Jetzt möchte ich realisieren, dass bei einem Klick auf den Titel (number, name, type) die Liste nach den Werten dieser Reihe geordnet wird. z.B.

klick auf type ->

number....name....type

..1............nameX...type1
..3............nameZ...type1
..2............nameY...type2

Die Liste wird beim Aufruf bereits durch folgenden Code im Repository geordnet:

Public Function findAll() {
$query = $this->createQuery();
Return $query
->setOrderings (Array('name' => Tx_Extbase_Persistence_Query:😮RDER_ASCENDING))
->execute();
}

Wie mache ich das am besten?
Kann ich das in der index.html über <f:link.action> machen? Wenn ja wie?
Und sollte ich das mit einem ViewHelper machen oder muss ich das im Rpository in der findAll() Funktion oder im Controller in der indexAction() eintragen?

Danke im Voraus,
Reginaldo

reginaldo ·

Kann ich das eventuell auch direkt im Repository machen?

Public Function findAll() {
$query = $this->createQuery();
Return $query
->setOrderings (Array('name' => Tx_Extbase_Persistence_Query:😮RDER_ASCENDING))
->execute();
}

Kann man statt 'name' eine variable aus der weitergeben? Wenn ja, wie geht das genau?

typonewbe ·

Hallo,

ich hatte damals in meiner Testextension das so gelöst.

Im Repository folgendes hinzugefügt

	/**
	 * Sort by Cols 
	 * @param array $col col
	 * @return object 
	 * */
	public function sortByCol($col) {
		$query = $this->createQuery();
		$query->getQuerySettings()->setRespectSysLanguage(FALSE);
		//Sortiert alle angegebenen Spalten
		$query->matching()->setOrderings($col);
		$result = $query->execute();				
		return $result;
	}

In der Controller Action dann

$arguments	=	$this->request->getArguments();
		$argument	=	$arguments['myvalue'];
		$order		=	explode(':',$arguments['order']);
		if($order[1] == 'ASC') {
			$ordering	=	array($order[0].'' => Tx_Extbase_Persistence_QueryInterface::ORDER_ASCENDING);
		}else {
			$ordering	=	array($order[0].'' => Tx_Extbase_Persistence_QueryInterface::ORDER_DESCENDING);		
		}

$myval	=	$this->testRepository->sortByCol($ordering);

Somit kann man nach jeder belibigen Spalte sortieren.

Eventuell hilft es dir 🙂

Gruß typonewbe