mein-sterntours/dev/frontend-navigation
2026-01-23 17:34:40 +01:00
..
BACKEND-UI.md 23-01-2026 2026-01-23 17:34:40 +01:00
header.html.twig 23-01-2026 2026-01-23 17:34:40 +01:00
KernelControllerListener.php 23-01-2026 2026-01-23 17:34:40 +01:00
navigation-api.md 23-01-2026 2026-01-23 17:34:40 +01:00
navigation.md 23-01-2026 2026-01-23 17:34:40 +01:00
PageRepository.php 23-01-2026 2026-01-23 17:34:40 +01:00
README.md 23-01-2026 2026-01-23 17:34:40 +01:00
test-api.html 23-01-2026 2026-01-23 17:34:40 +01:00
test-api.php 23-01-2026 2026-01-23 17:34:40 +01:00

Frontend Navigation - Backend API

Dieses Verzeichnis enthält die Dokumentation und Referenzimplementierungen für die Frontend-Navigation.

Übersicht

Die Navigation-API stellt die komplette Seitenstruktur des CMS als hierarchischen Baum oder flache Liste zur Verfügung.

Schnellstart

Backend-UI (Admin-Interface)

Zugriff über: Navigation API im Seitenmenü (Permission: crm-nav-api)

Die Backend-UI zeigt die komplette Frontend-Navigation:

  • 📊 Live-Statistiken (Gesamt, Aktiv, Programme, Länder)
  • 🌍 Länder-Navigation mit Children (gruppiert nach Haupt/Infos)
  • 🏠 USEDOM Ferienwohnungen mit allen FeWos
  • 📑 Mehr-Menü Seiten (Über uns, Reiseversicherung, Reiseführer, Reisemagazin, Reisenews)
  • 🔍 Volltext-Suche über Titel, Slug und URL
  • 🌳 Interaktiver Nested Tree mit Auf-/Zuklappen
  • 🎯 Filter (Mit ausgeblendeten/Nur sichtbare)
  • 📥 JSON-Export
  • 🔄 Cache-Verwaltung

API-Endpunkte

GET /api/navigation/tree              - Kompletter Navigationsbaum
GET /api/navigation/tree/active       - Nur aktive Navigationspunkte
GET /api/navigation/tree/{rootId}     - Teilbaum ab einer bestimmten Page
GET /api/navigation/flat              - Flache Liste aller Pages
GET /api/navigation/breadcrumb/{pageId} - Breadcrumb-Pfad

Beispiel-Verwendung

// Kompletten Navigationsbaum abrufen
fetch("/api/navigation/tree")
  .then((response) => response.json())
  .then((data) => {
    console.log(data.data); // Navigationsbaum
  });

Dateien

  • README.md - Diese Datei (Übersicht)
  • BACKEND-UI.md - Dokumentation der Backend-UI (Admin-Interface)
  • navigation.md - Dokumentation der Frontend-Routing-Logik (Symfony-basiert)
  • navigation-api.md - Vollständige API-Dokumentation mit Beispielen
  • test-api.php - CLI-Test-Script für alle API-Endpunkte
  • test-api.html - Browser-basierte interaktive Test-Oberfläche
  • KernelControllerListener.php - Referenz: Symfony KernelControllerListener
  • PageRepository.php - Referenz: Doctrine Page Repository

Implementierung

Die API wurde im Laravel-Backend implementiert:

Backend-Komponenten

API-Layer:

  1. API Controller: app/Http/Controllers/API/NavigationController.php

    • REST API-Endpunkte
    • JSON-Responses
  2. Web Controller: app/Http/Controllers/NavigationTreeController.php

    • Backend-UI (Admin-Interface)
    • Daten-Export und Cache-Management
  3. Service: app/Services/NavigationTreeService.php

    • Business-Logik
    • Rekursiver Baum-Aufbau
    • Caching (60 Min.)
    • Helper-Methoden (Breadcrumb, Node-Suche, etc.)
  4. Model: app/Models/Page.php

    • Eloquent Model für die Page-Entität
    • Relationships (parent, children, travel_program, etc.)
  5. Views: resources/views/navigation/index.blade.php

    • Interaktive Baum-Visualisierung
    • Suche und Filter
    • Statistiken
  6. Routes:

    • API: routes/api.php
    • Web: routes/web.php (Permission: crm-tp-na)

Features

Navigationsbaum

  • Hierarchische Struktur mit unbegrenzter Tiefe
  • Alle Page-Eigenschaften enthalten (SEO, Template, Status, etc.)
  • Beziehungen zu TravelProgram, FewoLodging, Country
  • Filterung nach Status und Sichtbarkeit
  • Sortierung nach Order und Title

Zusätzliche Funktionen

  • Breadcrumb-Generierung
  • Teilbaum-Abfrage
  • Flache Listen-Ansicht
  • Node-Zählung
  • URL-Pfad-Generierung

Performance

  • Effiziente Queries mit Eager Loading
  • Rekursive Baum-Konstruktion
  • Unterstützung für Nested Set Tree (lft/rgt)
  • Caching-ready

Datenstruktur

Jeder Navigationspunkt enthält:

{
  "id": 1,
  "title": "Seitentitel",
  "slug": "seitentitel",
  "url": "/seitentitel",
  "status": 1,
  "show_in_navi": 1,
  "order": 1,
  "template": "default",
  "lvl": 0,
  "parent_id": null,
  "is_travel_program": false,
  "is_fewo_lodging": false,
  "is_country_page": false,
  "children": [],
  "has_children": false
}

Siehe navigation-api.md für eine vollständige Feldbeschreibung.

Routing-Logik (Frontend)

Das Frontend verwendet einen KernelControllerListener (Symfony), der:

  1. API-Lookup prüft (externe Reiseführer)
  2. Datenbank-Suche durchführt (Page-Entität)
  3. Redirects verarbeitet (301-Weiterleitungen)
  4. Controller zuweist basierend auf Content-Type

Siehe navigation.md für Details zur Routing-Logik.

Unterschiede Frontend/Backend

Aspekt Frontend (Symfony) Backend (Laravel)
Framework Symfony 2.x Laravel 5.x
ORM Doctrine Eloquent
Routing KernelControllerListener API Routes
Tree-Logik Nested Set + Parent Traversal Parent-Child Relationships
API External (IQ API) Internal (Laravel)

Wartung

Neue Felder hinzufügen

  1. Füge das Feld in NavigationTreeService::buildNodeData() hinzu
  2. Aktualisiere die Dokumentation in navigation-api.md

Performance optimieren

  1. Füge Caching in NavigationTreeService hinzu
  2. Verwende Eager Loading für Relations
  3. Implementiere Pagination für große Bäume

Tests

Empfohlene Tests:

  • Unit Tests für NavigationTreeService
  • API Tests für alle Endpunkte
  • Performance Tests für große Navigationsbäume

Support

Bei Fragen zur API siehe:

  • navigation-api.md - Vollständige API-Dokumentation
  • navigation.md - Frontend Routing-Dokumentation