← Zurück zu den Projekten Webanwendung · Automobil

V. Parrot Garage

Ein Fahrzeugkatalog mit erweiterten Filtern, Fahrzeugdetails und Bildverwaltung.

V. Parrot Garage
PROJEKT

Das Projekt

V. Parrot zeigt eine stärker anwendungsorientierte Symfony-Architektur mit Fahrzeugkatalog, erweiterten Filtern, strukturierten Daten und Bildverwaltung.

Systemarchitektur & Unternehmensplattform

Full-Stack-Automobil-Webplattform entwickelt mit Symfony 6, Doctrine ORM und EasyAdmin 4. Sie kombiniert ein verkaufsstarkes Portal, eine AJAX-Gebrauchtwagensuche, rollenbasierte Administration (RBAC) und REST-APIs für mobile Apps.

┌─────────────────────────────────────────────────────────────────────────────┐
│               Garage Vincent Parrot — Architecture Dual-Tier                │
└──────────────────────────────────────┬──────────────────────────────────────┘
                                       │
           ┌───────────────────────────┼───────────────────────────┐
           ▼                           ▼                           ▼
  🚗 Moteur Véhicules & AJAX     👥 Back-Office RBAC          📡 API REST Headless
  • noUiSlider (Prix, Km, Année) • EasyAdmin 4 Dashboard      • Serializer JMS Groups
  • Dropdowns dépendants BDD    • Isolation ROLE_ADMIN/EMP   • Endpoints paginés (/api)
  • Rendu partiel JSON/Twig     • Modération avis clients    • Support Mobile & Cross-App
  • VichUploader multi-photos   • Gestion horaires & services • Sécurité CORS & CSRF
            

AJAX-Suchmaschine

Dynamische Mehrkriterien-Fahrzeugsuche mit noUiSlider ohne Neuladen der Seite.

Rollenbasierte Zugriffskontrolle

Strikte Trennung der Rechte zwischen Werkstattinhaber und Mitarbeitern.

Entkoppelte REST-API

Sichere JSON-Endpunkte zur Speisung der Flutter-App und externer Systeme.

1. Funktionen des öffentlichen Portals

Entwickelt zur Präsentation der Werkstattleistungen und Gewinnung qualifizierter Anfragen:

Werkstattleistungen-CMS

Strukturierte Leistungsübersicht (Mechanik, Karosseriebau, Wartungsintervalle, Klimaservice) mit Bildverwaltung via VichUploader.

Gebrauchtwagen-Bestandskatalog

Detaillierte Fahrzeugseiten (/occasions/vehicule/{id}) mit Bildkarussell, Ausstattungsangaben und vorausgefülltem Anfrageformular.

Kundenbewertungen & Moderation

5-Sterne-Bewertungssystem mit Spam-Schutz und Mitarbeiterfreigabe vor der Veröffentlichung.

Dynamische Öffnungszeiten-Anzeige

Dedizierte Twig-Erweiterung (HoraireExtension) zur automatischen Einbindung der Echtzeit-Öffnungszeiten im Footer.

2. Asynchroner AJAX-Mehrkriterien-Filter

Die Filtersuche verbindet SearchData, SearchForm, VehiculeRepository::findSearch() und einen JavaScript-Controller:

Suchkriterium UI-Steuerung Doctrine-DQL-Abfrage
Preisspanne Dual-handle noUiSlider p.prix >= :prixmin AND p.prix <= :prixmax
Kilometerstand Dual-handle noUiSlider p.kilometrage >= :kmmin AND p.kilometrage <= :kmmax
Erstzulassung Dual-handle noUiSlider (1970 - 2026) p.annee >= :anneemin AND p.annee <= :anneemax
Marke & Modell Dynamisch kaskadierende Dropdowns (/modeles/fetch) m.id IN (:marque) AND d.id IN (:modele)
Karosserieform, Kraftstoff & Kategorie Checkboxes (Carrosserie, Énergie) t.id IN (:type), a.id IN (:carburant)
// Rendu partiel asynchrone JSON dans OccasionsController.php
if ($request->get('ajax')) {
    return new JsonResponse([
        'content'    => $this->renderView('occasions/_occasions.html.twig', ['occasions' => $occasions]),
        'sorting'    => $this->renderView('occasions/_sorting.html.twig', ['occasions' => $occasions]),
        'pagination' => $this->renderView('occasions/_pagination.html.twig', ['occasions' => $occasions]),
        'prixmin'    => $prixmin, 'prixmax' => $prixmax,
        'kmmin'      => $kmmin,   'kmmax'   => $kmmax,
        'anneemin'   => $anneemin,'anneemax'=> $anneemax
    ]);
}
            

3. Rollenbasierte Zugriffskontrolle (RBAC)

Rechteverwaltung über EasyAdmin und Symfony Security Firewalls:

ROLE_ADMIN Administrator (Vincent Parrot)

  • Mitarbeiterkonten-Verwaltung (Anlage, Passwort-Reset mit geprüfter Komplexität).
  • Vollständige CMS-Pflege der Werkstattleistungen, Texte und Bilder.
  • Verwaltung der wöchentlichen Öffnungszeiten und Urlaubszeiten.
  • Prüfung und Verwaltung eingegangener Kundenanfragen.

ROLE_EMPLOYE Werkstatt-Mitarbeiter

  • Gebrauchtwagen-Bestandsverwaltung (Inserieren, Mehrfach-Bilderupload, Ausstattungsmerkmale).
  • Automatische Zuordnung des eingeloggten Mitarbeiters als Autor bei der Datenbankspeicherung.
  • Kundenbewertungs-Moderation (Freigabe echter Rezensionen oder Löschung von Spam).
  • Keine Möglichkeit zur Rechteerweiterung auf Administrator-Ebene.

4. Headless REST-API-Endpunkte

Sichere JSON-Endpunkte für mobile Apps und Schnittstellen:

Method Endpoint URL Verwendungszweck JSON-Antwortstruktur
GET /api/vehicules Abruf des gesamten Fahrzeugbestands JSON Array (JMS getVehicules group)
GET /api/vehiculesby?page={n} Paginierte Fahrzeugliste für schnelles Nachladen { data: [...], pagination: { ... } }
GET /api/vehicules/{id} Vollständige Spezifikationen und Bildergalerie für ein Einzelfahrzeug JSON Object (Véhicule, Galerie, Options)
GET /api/marques-modeles Vollständige Hierarchie verfügbarer Marken und Modelle [{ id, nom, modeles: [{ id, nom }] }]
POST /api/contact Kundenanfrage übermitteln mit automatischem E-Mail-Versand { status: "success" } (HTTP 201)

5. Datenmodell & Doctrine-Relationen

Normalisiertes relationales Schema mit Fremdschlüssel-Integrität unter MySQL:

Entität Vehicule & Galerie

OneToMany-Kaskade zu VehiculeImage für Mehrfachfotos und ManyToMany-Verknüpfung zu Employes.

Fahrzeugtaxonomie

Relational normalisierte Entitäten Marque, Modele, Carburant (Benzin, Diesel, Hybrid, Elektro), Categorie und Type.

Betrieb & Interaktionen

Entitäten für Service, Horaire, Temoignage (mit booleschem Freigabestatus) und Contact.

6. SEO-Architektur & Performance

Lokales SEO & Strukturierte Daten

Schema.org-Markup für AutoRepair und Product/Car, gezielte Keyword-Dichte für den Raum Toulouse und kanonische URLs.

Performance & Partielles Rendering

Asynchrones partielles AJAX-Rendering zur Minimierung des Datenvolumens, optimierte Bildbereitstellung und CSRF-Schutz.

Live-Plattform ansehen

Erkunden Sie den Gebrauchtwagenkatalog und testen Sie den AJAX-Filter im Live-Betrieb.

Website des Autohauses besuchen ↗