Dalam era digital hari ini, industri lelongan telah beransur-ansur bergerak dalam talian. Aliran ini telah ditolak ke tahap yang lebih tinggi oleh wabak mahkota baharu, dan banyak rumah lelongan tradisional telah mula mencuba lelongan dalam talian. Untuk mencapai matlamat ini, mereka memerlukan sistem lelongan yang berkuasa dan mudah digunakan. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Laravel untuk membina sistem lelongan dalam talian.
Laravel ialah rangka kerja PHP popular yang menyediakan banyak fungsi praktikal, seperti penghalaan, migrasi pangkalan data, baris gilir, dll.
1. Persediaan
Sebelum menulis kod, kita perlu memasang persekitaran pembangunan Laravel dan beberapa kebergantungan yang diperlukan. Anda boleh mendapatkan arahan terperinci tentang proses ini di laman web rasmi Laravel, berikut adalah beberapa langkah ringkas:
Anda boleh menggunakan Komposer untuk mencipta projek Laravel. Hanya masukkan arahan berikut dalam konsol:
composer create-project --prefer-dist laravel/laravel auction-system
Pergi ke direktori projek dan masukkan arahan berikut untuk memasang semua dependencies:
composer install
Ubah suai sambungan fail dalam . maklumat, tetapkan medan APP_KEY kepada kunci aplikasi. Kemudian, jalankan arahan berikut untuk memindahkan pangkalan data:
php artisan migrate
2. Bina model item lelongan dan pindahkan
Model ialah konsep teras dalam Laravel, yang mewakili jadual pangkalan data yang berinteraksi dengan aplikasi. Kita perlu mencipta model item lelongan untuk mewakili semua item lelongan dalam talian. Dalam Laravel, model adalah satu dengan satu dengan migrasi, yang digunakan untuk menjana jadual pangkalan data.
Gunakan arahan berikut untuk menjana model item lelongan dan migrasi:
php artisan make:model AuctionItem -m
Arahan ini akan menjana fail AuctionItem.php dan fail migrasi pangkalan data untuk kami. Fail migrasi berada dalam direktori pangkalan data/penghijrahan dan fail model berada dalam direktori apl/Model.
Kita perlu menentukan jadual pangkalan data item lelongan dalam fail migrasi. Buka fail migrasi yang dijana dan ubah suai kaedah naik seperti berikut:
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(); }); }
Di sini, kami mentakrifkan model item lelongan dan menambah medan berikut:
3. Kami tidak memerlukan antara muka item lelong untuk menyediakan Aplikasi kami menambah antara muka di mana item lelongan baharu boleh dibuat. Kami akan menggunakan pandangan Laravel dan enjin templat Blade untuk mencapai matlamat ini.
Pertama, kita perlu mencipta pengawal untuk mengendalikan semua logik berkaitan item lelongan. Cipta pengawal menggunakan arahan berikut:
php artisan make:controller AuctionItemController --resource
Arahan ini akan mencipta fail pengawal untuk kami dipanggil AuctionItemController.php dan menjana indeks lalai(), create(), store(), show(), edit( ), update( ), destroy() dan kaedah lain. Di sini kita perlu menggunakan kaedah create() untuk memproses halaman item lelongan baharu.
Buka fail AuctionItemController.php dan tambah kod berikut dalam kaedah create():
public function create() { return view('auction_item.create'); }
Kaedah ini akan memaparkan templat paparan bernama auction_item/create.blade.php dan mengembalikannya kepada penyemak imbas.
Kini kita perlu mencipta folder yang dipanggil auction_item dalam direktori sumber/pandangan dan mencipta fail yang dipanggil create.blade.php di dalamnya. Tambahkan kod berikut:
@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
Fail paparan ini akan memaparkan antara muka pengguna yang mengandungi borang yang diperlukan untuk mencipta item lelongan baharu. Kami menggunakan enjin templat Blade Laravel untuk memaparkan borang, dan laluan dan pengawal Laravel untuk mengendalikan data yang diserahkan.
4. Tambahkan penghalaan pembuatan item lelongan dan logik pemprosesan
Sekarang kita perlu menambah laluan untuk memproses data borang yang dihantar oleh pengguna. Tambahkan kod penghalaan berikut dalam fail route/web.php:
Route::get('/auction-items/create', [AuctionItemController::class, 'create'])->name('auction-item.create'); Route::post('/auction-items', [AuctionItemController::class, 'store'])->name('auction-item.store');
Laluan ini akan menggunakan kaedah store() pengawal AuctionItemController untuk mengendalikan permintaan POST.
Buka fail AuctionItemController.php dan tambahkan kod berikut:
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'); }
Kaedah ini akan mengesahkan data borang yang diserahkan oleh pengguna, menyimpannya dalam pangkalan data dan mengubah hala pengguna ke halaman penyenaraian item lelongan.
5. Halaman senarai dan fungsi lelongan
Kini kita perlu menambah halaman senarai item lelongan dan melaksanakan beberapa fungsi lelongan asas di dalamnya. Kami akan menggunakan enjin templat bilah Laravel untuk menjana halaman HTML dan menggunakan pengawal Laravel untuk mengendalikan logik berkaitan lelongan.
Tambahkan kod berikut dalam AuctionItemController.php:
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'); }
Kaedah ini akan memaparkan senarai item lelongan, mengendalikan permintaan bida pengguna dan menyimpan bida ke dalam pangkalan data.
Buat fail bernama index.blade.php dalam folder resources/views/auction_item dan tambah kod berikut:
@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
Fail paparan ini akan memaparkan semua item lelongan dan menyediakan borang untuk mengendalikan permintaan bida.
6
Kini kami telah mewujudkan sistem lelongan dalam talian dengan fungsi asas. Apabila pengguna melawati halaman utama apl, mereka akan melihat senarai semua item lelongan. Pengguna boleh mengklik mana-mana item lelongan dan dibawa ke halaman butiran lelongan di mana mereka boleh menyerahkan permintaan bida. Nilai semasa lelongan akan dikemas kini secara automatik selepas setiap tawaran, dan apabila lelongan tamat, sistem akan menjual item secara automatik kepada pembida tertinggi.
Dalam proses ini, kami menggunakan pelbagai ciri yang disediakan oleh rangka kerja Laravel, seperti model, fail migrasi, laluan, pengawal, pandangan dan enjin templat Blade. Alat berkuasa ini membolehkan kami mencipta sistem lelongan dalam talian yang berfungsi sepenuhnya dengan mudah.
Atas ialah kandungan terperinci Bagaimana untuk membangunkan sistem lelongan dalam talian menggunakan Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!