Wie löst man "unstrukturierte" Navigation in PHP?

Ich habe ein großes, PHP-basiertes CMS, das Webseiten verwaltet. Alle Elemente sind in einer Baumstruktur organisiert. Wenn ich ein Element bearbeite, zeigt die Schaltfläche "Zurück" normalerweise auf das übergeordnete Element. Der übliche Workflow navigiert also durch den Baum.

Hin und wieder entsteht die Notwendigkeit eines Workflows, der ohne Rücksicht auf die Struktur zu anderen Elementen "springt".

Wenn ein Benutzer beispielsweise eine Webseite bearbeitet, möchte er möglicherweise die Vorlage öffnen, an die die Seite angehängt ist (ein anderes Element in einem völlig anderen Zweig), dort eine Änderung vornehmen und beim Klicken auf "Speichern" mit einer Rückkehr zu rechnen die Seite, die sie bearbeiteten.

Im Moment löse ich das mit

domain.com/admin/template/edit?from=/frontpage/edit

Dabei bestimmt die Variable "from" die Ziel-URLs der Schaltflächen "save" und "cancel".

Dies funktioniert bis zu einem bestimmten Punkt, wenn der Pfad zu lang und komplex wird. Zum Beispiel, was ist, wenn der Benutzer

Bearbeitet eine Seiteöffnet die angehängte Vorlagezeigt eine Vorschau dieser Vorlage in der Front-End-Ansicht anund erwartet dann, nahtlos zu der Seite zurückgeführt zu werden, die sie bearbeiteten?

Im Moment endet der "Verlauf" beim letzten Element, sodass der Link zur Originalseite verloren geht, wenn der Benutzer aus der Front-End-Ansicht zurückkehrt, und er ihn manuell durchsuchen muss.

Ein weiteres Problem, das schnell auftreten kann, ist, dass die GET-URL, die alle "from" -Werte enthält, zu lang oder völlig chaotisch wird:

domain.com/admin/template/edit?from=/frontpage/edit&from=/somepage/edit
&from=/template/preview&/from=template/edit&/from=template_preview ...

(Sie bekommen die Drift)

Ich habe dies elegant gelöst, indem ich in der Vergangenheit separate Fenster geöffnet habe, aber ich möchte wirklich einen nahtlosen Ein-Fenster-Workflow implementieren, der universell funktioniert, hauptsächlich, weil mehrere Fenster dazu neigen, Benutzer zu verwirren.

Wie löst du das?

Haben Sie eine robuste "unstrukturierte" Navigation implementiert, die bei mehreren geöffneten Fenstern gut funktioniert (= ein Benutzer führt mehrere verschiedene Aktionen mit unterschiedlichen Navigationspfaden aus)?

Wie gehen Sie auf der Seite der Benutzeroberfläche vor?

Der beste Ansatz, den ich mir vorstellen kann, ist die Weitergabe eines Von-Werts, der auf einen temporären Datensatz in einer Datenbank oder Sitzung verweist. Dieser Datensatz enthält alle Informationen zum aktuellen Pfad und kann daher immer den richtigen Wert für "Zurück zu Seite x" liefern.

Was ich am liebsten hören möchte, sind Erfahrungen von Menschen, die dies erfolgreich umgesetzt haben und wie sie es gemacht haben.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage