Heim >PHP-Framework >Laravel >So entwickeln Sie ein Online-Auktionssystem mit Laravel
Im heutigen digitalen Zeitalter hat sich die Auktionsbranche nach und nach online verlagert. Dieser Trend wurde durch die neue Corona-Epidemie auf ein höheres Niveau getrieben, und viele traditionelle Auktionshäuser haben begonnen, Online-Auktionen auszuprobieren. Um dies zu erreichen, benötigten sie ein Auktionssystem, das sowohl leistungsstark als auch einfach zu bedienen war. In diesem Artikel wird erläutert, wie Sie mit dem Laravel-Framework ein Online-Auktionssystem erstellen.
Laravel ist ein beliebtes PHP-Framework, das viele praktische Funktionen wie Routing, Datenbankmigration, Warteschlange usw. bietet.
1. Vorbereitung
Bevor wir Code schreiben, müssen wir die Entwicklungsumgebung von Laravel und einige notwendige Abhängigkeiten installieren. Detaillierte Anweisungen zu diesem Vorgang finden Sie auf der offiziellen Laravel-Website. Hier sind einige kurze Schritte:
Sie können Composer verwenden, um ein Laravel-Projekt zu erstellen. Geben Sie einfach den folgenden Befehl in die Konsole ein:
composer create-project --prefer-dist laravel/laravel auction-system
Gehen Sie in das Projektverzeichnis und geben Sie den folgenden Befehl ein, um alle Abhängigkeiten zu installieren:
composer install
Ändern Sie die Datenbankverbindung in der .env-Datei Um Informationen zu erhalten, legen Sie das Feld APP_KEY auf den Anwendungsschlüssel fest. Führen Sie dann den folgenden Befehl aus, um die Datenbank zu migrieren:
php artisan migrate
2. Erstellen Sie das Auktionsartikelmodell und migrieren Sie
Modell ist ein Kernkonzept in Laravel, das die Datenbanktabelle darstellt, die mit der Anwendung interagiert. Wir müssen ein Auktionsartikelmodell erstellen, um alle Online-Auktionsartikel darzustellen. In Laravel sind Modelle eins zu eins mit Migrationen, die zum Generieren von Datenbanktabellen verwendet werden.
Verwenden Sie den folgenden Befehl, um das Auktionsartikelmodell und die Migration zu generieren:
php artisan make:model AuctionItem -m
Dieser Befehl generiert für uns eine AuctionItem.php-Datei und eine Datenbankmigrationsdatei. Die Migrationsdateien befinden sich im Verzeichnis „database/migrations“ und die Modelldateien im Verzeichnis „app/Models“.
Wir müssen die Datenbanktabelle der Auktionsartikel in der Migrationsdatei definieren. Öffnen Sie die generierte Migrationsdatei und ändern Sie die Up-Methode wie folgt:
public function up() { Schema::create('auction_items', function (Blueprint $table) { $table->id(); $table->string('name'); $table->text('description'); $table->integer('starting_price'); $table->integer('current_price'); $table->dateTime('start_time'); $table->dateTime('end_time'); $table->timestamps(); }); }
Hier definieren wir ein Modell von Auktionsartikeln und fügen die folgenden Felder hinzu:
3. Auktionsartikelschnittstelle und Controller hinzufügen
Jetzt brauchen wir Zur Bereitstellung unserer Die Anwendung fügt eine Schnittstelle hinzu, über die neue Auktionsgegenstände erstellt werden können. Um dies zu erreichen, werden wir die Ansichten und die Blade-Templating-Engine von Laravel verwenden.
Zuerst müssen wir einen Controller erstellen, der die gesamte Logik im Zusammenhang mit Auktionsartikeln verwaltet. Verwenden Sie den folgenden Befehl, um einen Controller zu erstellen:
php artisan make:controller AuctionItemController --resource
Dieser Befehl erstellt für uns eine Controller-Datei namens AuctionItemController.php und generiert die Standardeinstellungen index(), create(), store(), show(), edit(), update (), destroy() und andere Methoden. Hier müssen wir die Methode create() verwenden, um die Seite mit dem neuen Auktionsartikel zu verarbeiten.
Öffnen Sie die Datei AuctionItemController.php und fügen Sie den folgenden Code in die Methode create() ein:
public function create() { return view('auction_item.create'); }
Diese Methode rendert eine Ansichtsvorlage namens Auction_item/create.blade.php und gibt sie an den Browser zurück.
Jetzt müssen wir einen Ordner namens „auction_item“ im Verzeichnis „resources/views“ erstellen und darin eine Datei namens „create.blade.php“ erstellen. Fügen Sie den folgenden Code hinzu:
@extends('layouts.app') @section('content') <div class="container"> <h1>Create New Auction Item</h1> <form action="{{ route('auction-item.store') }}" method="post"> @csrf <div class="form-group"> <label for="name">Name</label> <input type="text" class="form-control" name="name" id="name" required> </div> <div class="form-group"> <label for="description">Description</label> <textarea name="description" id="description" class="form-control" rows="5" required></textarea> </div> <div class="form-group"> <label for="starting_price">Starting Price</label> <input type="number" class="form-control" name="starting_price" id="starting_price" min="0" required> </div> <div class="form-group"> <label for="start_time">Start Time</label> <input type="datetime-local" class="form-control" name="start_time" id="start_time" required> </div> <div class="form-group"> <label for="end_time">End Time</label> <input type="datetime-local" class="form-control" name="end_time" id="end_time" required> </div> <button type="submit" class="btn btn-primary">Create</button> </form> </div> @endsection
Diese Ansichtsdatei rendert eine Benutzeroberfläche mit den Formularen, die zum Erstellen neuer Auktionsartikel erforderlich sind. Wir haben die Blade-Vorlagen-Engine von Laravel zum Rendern des Formulars und die Routen und Controller von Laravel zur Verarbeitung der übermittelten Daten verwendet.
4. Routing- und Verarbeitungslogik für die Erstellung von Auktionsartikeln hinzufügen
Jetzt müssen wir eine Route hinzufügen, um die vom Benutzer übermittelten Formulardaten zu verarbeiten. Fügen Sie den folgenden Routing-Code in der Datei „routes/web.php“ hinzu:
Route::get('/auction-items/create', [AuctionItemController::class, 'create'])->name('auction-item.create'); Route::post('/auction-items', [AuctionItemController::class, 'store'])->name('auction-item.store');
Diese Route verwendet die Methode „store()“ des AuctionItemController-Controllers, um POST-Anfragen zu verarbeiten.
Öffnen Sie die Datei AuctionItemController.php und fügen Sie den folgenden Code hinzu:
public function store(Request $request) { $data = $request->validate([ 'name' => 'required', 'description' => 'required', 'starting_price' => 'required|numeric|min:0', 'start_time' => 'required|date', 'end_time' => 'required|date|after:start_time', ]); $auctionItem = new AuctionItem(); $auctionItem->name = $data['name']; $auctionItem->description = $data['description']; $auctionItem->starting_price = $data['starting_price']; $auctionItem->current_price = $data['starting_price']; $auctionItem->start_time = $data['start_time']; $auctionItem->end_time = $data['end_time']; $auctionItem->save(); return redirect()->route('auction-item.index'); }
Diese Methode validiert die vom Benutzer übermittelten Formulardaten, speichert sie in der Datenbank und leitet den Benutzer zur Seite mit der Auflistung der Auktionsartikel weiter.
5. Listenseite und Auktionsfunktion
Jetzt müssen wir eine Auktionsartikellistenseite hinzufügen und darin einige grundlegende Auktionsfunktionen implementieren. Wir werden die Blade-Template-Engine von Laravel verwenden, um die HTML-Seite zu generieren, und den Controller von Laravel verwenden, um die auktionsbezogene Logik zu verwalten.
Fügen Sie den folgenden Code in AuctionItemController.php hinzu:
public function index() { $auctionItems = AuctionItem::all(); return view('auction_item.index', compact('auctionItems')); } public function bid(Request $request, AuctionItem $auctionItem) { $bidAmount = $request->input('bid_amount'); if ($bidAmount <= $auctionItem->current_price) { return redirect()->back()->withErrors(['Bid amount should be greater than current price']); } $auctionItem->current_price = $bidAmount; $auctionItem->save(); return redirect()->back()->with('success', 'Bid successful'); }
Diese Methoden rendern die Auktionsartikelliste, bearbeiten die Gebotsanfrage des Benutzers und speichern die Gebote in der Datenbank.
Erstellen Sie eine Datei mit dem Namen index.blade.php im Ordner resources/views/auction_item und fügen Sie den folgenden Code hinzu:
@extends('layouts.app') @section('content') <div class="container"> <h1>Auction Items</h1> @foreach($auctionItems as $auctionItem) <div class="card mb-3"> <div class="card-body"> <h5 class="card-title">{{ $auctionItem->name }}</h5> <p class="card-text">{{ $auctionItem->description }}</p> <p class="card-text">Starting Price: ${{ $auctionItem->starting_price }}</p> <p class="card-text">Current Price: ${{ $auctionItem->current_price }}</p> <form action="{{ route('auction-item.bid', $auctionItem) }}" method="post"> @csrf <div class="form-group"> <label for="bid_amount">Your Bid</label> <input type="number" class="form-control" name="bid_amount" id="bid_amount" min="{{ $auctionItem->current_price }}" required> </div> <button type="submit" class="btn btn-primary">Bid</button> </form> </div> </div> @endforeach </div> @endsection
Diese Ansichtsdatei zeigt alle Auktionsartikel an und stellt ein Formular zur Bearbeitung von Gebotsanfragen bereit.
6. Abgeschlossen
Jetzt haben wir ein Online-Auktionssystem mit Grundfunktionen etabliert. Wenn Benutzer die Startseite der App besuchen, sehen sie eine Liste aller Auktionsgegenstände. Benutzer können auf einen beliebigen Auktionsartikel klicken und werden zur Seite mit den Auktionsdetails weitergeleitet, wo sie eine Gebotsanfrage senden können. Der aktuelle Wert der Auktion wird nach jedem Gebot automatisch aktualisiert, und wenn die Auktion endet, verkauft das System den Artikel automatisch an den Höchstbietenden.
In diesem Prozess haben wir verschiedene Funktionen verwendet, die vom Laravel-Framework bereitgestellt werden, wie z. B. Modelle, Migrationsdateien, Routen, Controller, Ansichten und die Blade-Vorlagen-Engine. Mit diesen leistungsstarken Tools können wir ganz einfach ein voll funktionsfähiges Online-Auktionssystem erstellen.
Das obige ist der detaillierte Inhalt vonSo entwickeln Sie ein Online-Auktionssystem mit Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!