Hallo,
ich habe eine Extension mit dem extension_builder erstellt und danach händisch noch sorting Felder eingefügt damit man die Datensätze dann im Backend anordnen kann.
Extbase übernimmt diese Sortierung aber nicht (was ich seltsam/schwach finde). Deswegen habe ich jetzt bei meinen Models die findAll() Methode überschrieben:
public function findAll() {
$query = $this->createQuery();
$query->setOrderings (Array('sorting' => Tx_Extbase_Persistence_Query::ORDER_ASCENDING));
return $query->execute();
}
Damit kann ich jetzt im Controller sortiert auslesen.
Das Problem, das ich jetzt aber noch habe ist, wenn ich einen Datensatz mit einer 1:n verknüfpung habe die ich in Fluid durchlaufe, dass die n-Datensätze nicht nach dem sorting Field sortiert werden.
Beispiel:
Projekt 1
- Bild 1 uid 4, sorting 1
- Bild 2 uid 3, sorting 2
- Bild 3 uid 1, sorting 3
- Bild 4 uid 2, sorting 4
Projekt 2
Projekte und Bilder haben eine sorting Spalte und können im Backend sortiert werden. Die findAll() Methode habe ich bei beiden Repositories geändert.
Mit folgendem FLUID Snippet werden die Bilder aber nicht sortiert ausgegeben sondern einfach nach der Reihenfolge der Eingabe:
<h1>{project.title}</h1>
<h2>{project.subtitle}</h2>
<f:for each="{project.images}" as="image" iteration="blockIteration">
{image.title}
</f:for>
Mir ist auch klar warum, denn hier wird natürlich nicht die findAll() Methode der Bilder aufgerufen, aber wie kann ich bewerkstelligen, dass auch diese Datensätze korrekt sortiert werden wie im Backend und nicht nach der UID?
Habe schon ein bisschen auf Google gesucht und nix dazu gefunden. Das kann ja nicht sein, dass das nicht funktioniert, denn dann wäre ExtBase/Fluid ja nicht wirklich ordentlich zu gebrauchen - also habe ich hoffentlich etwas übersehen.
lg Matthias