Dalam beberapa tahun kebelakangan ini, dengan perkembangan pesat Internet mudah alih, pelbagai platform e-dagang berasaskan pembelian berkumpulan telah bermunculan Antaranya, platform e-dagang yang memfokuskan kepada pembelian berkumpulan semakin popular di kalangan pengguna. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Laravel untuk membangunkan platform pembinaan kumpulan dalam talian dan menyediakan contoh kod khusus.
1. Analisis Keperluan
Sebelum memulakan pembangunan, kami perlu menjalankan analisis keperluan untuk menjelaskan modul berfungsi yang perlu dibangunkan. Platform pembinaan kumpulan yang lengkap secara amnya perlu memasukkan modul berikut:
1 Modul pengurusan pengguna
Pendaftaran pengguna, log masuk, pengurusan maklumat peribadi, dsb.
2. Modul pengurusan produk
Pentadbir boleh menambah maklumat produk, termasuk nama produk, harga, inventori, dll.
3. Modul Pengurusan Pesanan
Pengguna boleh memilih produk untuk dikumpulkan bersama, membuat pesanan untuk pembelian dan pentadbir boleh melihat dan memproses pesanan.
4. Modul pengurusan kumpulan
Pengguna boleh membuat aktiviti kumpulan atau menyertai aktiviti kumpulan sedia ada.
5. Modul pembayaran
menyokong pelbagai kaedah pembayaran, dan pengguna boleh memilih kaedah pembayaran yang sesuai dengan mereka.
2. Persediaan persekitaran
Sebelum menyediakan persekitaran pembangunan, anda perlu memasang Komposer terlebih dahulu, dan kemudian jalankan arahan berikut pada baris arahan:
composer create-project --prefer-dist laravel/laravel pin-tuan
Arahan ini akan mencipta projek Laravel bernama "pin-tuan".
Seterusnya, kita perlu mengkonfigurasi pangkalan data, mengedit fail ".env" dalam direktori akar projek dan mengisi maklumat berkaitan pangkalan data sepenuhnya.
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=pin-tuan DB_USERNAME=root DB_PASSWORD=root
Selepas melengkapkan langkah di atas, anda boleh mula menulis kod program.
3. Tulis kod program
1. Modul pengurusan pengguna
(1) Pendaftaran pengguna
Pertama, kita perlu menambah laluan pendaftaran dalam fail penghalaan:
Route::get('/register', 'AuthRegisterController@showRegistrationForm')->name('register'); Route::post('/register', 'AuthRegisterController@register');
Di sini kami menggunakan sistem pengesahan pengguna Laravel sendiri Fungsi pendaftaran pengguna. Dalam fail pengawal, kita hanya perlu mengatasi kaedah showRegistrationForm() dan register(). Kod khusus adalah seperti berikut:
class RegisterController extends Controller { use RegistersUsers; protected $redirectTo = '/dashboard'; public function __construct() { $this->middleware('guest'); } public function showRegistrationForm() { return view('auth.register'); } protected function register(Request $request) { $this->validator($request->all())->validate(); event(new Registered($user = $this->create($request->all()))); $this->guard()->login($user); return redirect($this->redirectPath()); } }
(2) Log masuk pengguna
Tambah laluan log masuk dalam fail penghalaan:
Route::get('/login', 'AuthLoginController@showLoginForm')->name('login'); Route::post('/login', 'AuthLoginController@login'); Route::post('/logout', 'AuthLoginController@logout')->name('logout');
Begitu juga, kami menggunakan sistem pengesahan pengguna Laravel sendiri untuk melaksanakan fungsi log masuk pengguna. Dalam fail pengawal, kita hanya perlu mengatasi kaedah showLoginForm(), log masuk() dan log keluar(). Kod khusus adalah seperti berikut:
class LoginController extends Controller { use AuthenticatesUsers; protected $redirectTo = '/dashboard'; public function __construct() { $this->middleware('guest')->except('logout'); } public function showLoginForm() { return view('auth.login'); } protected function authenticated(Request $request, $user) { if (!$user->is_activated) { $this->guard()->logout(); return redirect('/login')->withError('请先激活您的账号'); } } public function logout(Request $request) { $this->guard()->logout(); $request->session()->invalidate(); return redirect('/login'); } }
(3) Pengurusan maklumat peribadi
Dalam fail pengawal, kami hanya perlu menulis kaedah kemas kini() untuk mengendalikan permintaan kemas kini maklumat peribadi. Kod khusus adalah seperti berikut:
public function update(Request $request) { $user = Auth::user(); $this->validate($request, [ 'name' => 'required|string|max:255|unique:users,name,' . $user->id, 'email' => 'required|string|email|max:255|unique:users,email,' . $user->id, 'password' => 'nullable|string|min:6|confirmed', ]); $user->name = $request->input('name'); $user->email = $request->input('email'); if ($request->has('password')) { $user->password = bcrypt($request->input('password')); } $user->save(); return redirect()->back()->withSuccess('更新成功'); }
2 Modul pengurusan produk
(1) Senarai produk
Pertama, tentukan model produk dalam fail model:
class Product extends Model { protected $fillable = ['name', 'price', 'stock', 'description', 'image']; public function getAvatarAttribute($value) { return asset('storage/' . $value); } }
Seterusnya, dalam fail pengawal, kami menulis indeks( ) kaedah untuk Memaparkan senarai produk. Kod khusus adalah seperti berikut:
public function index() { $products = Product::all(); return view('product.index', compact('products')); }
Dalam fail paparan, kami hanya perlu melintasi semua produk dan memaparkannya. Kod khusus adalah seperti berikut:
@foreach ($products as $product) <div class="col-md-4"> <div class="card mb-4 shadow-sm"> <img src="{{ $product- alt="Cara menggunakan Laravel untuk membangunkan platform perkongsian kumpulan dalam talian" >image }}" width="100%"> <div class="card-body"> <h5 class="card-title">{{ $product->name }}</h5> <p class="card-text">{{ $product->description }}</p> <div class="d-flex justify-content-between align-items-center"> <div class="btn-group"> <a href="{{ route('product.show', $product->id) }}" class="btn btn-sm btn-outline-secondary">查看</a> </div> <small class="text-muted">{{ $product->price }}元</small> </div> </div> </div> </div> @endforeach
(2) Butiran produk
Dalam fail pengawal, kami menulis kaedah show() untuk memaparkan butiran produk. Kod khusus adalah seperti berikut:
public function show($id) { $product = Product::findOrFail($id); return view('product.show', compact('product')); }
Dalam fail paparan, kami hanya perlu memaparkan maklumat terperinci produk. Kod khusus adalah seperti berikut:
<div class="row"> <div class="col-md-6"> <img src="{{ $product- alt="Cara menggunakan Laravel untuk membangunkan platform perkongsian kumpulan dalam talian" >image }}" width="100%"> </div> <div class="col-md-6"> <h2>{{ $product->name }}</h2> <p>价格:{{ $product->price }}元</p> <p>库存:{{ $product->stock }}件</p> <form action="{{ route('product.buy', $product->id) }}" method="post"> @csrf <div class="form-group"> <label for="quantity">数量</label> <input type="number" name="quantity" class="form-control" min="1" max="{{ $product->stock }}" required> </div> <button type="submit" class="btn btn-primary">立即购买</button> </form> </div> </div>
3 Modul pengurusan pesanan
(1) Senarai pesanan
Dalam fail pengawal, kami menulis kaedah indeks() untuk memaparkan senarai pesanan. Kod khusus adalah seperti berikut:
public function index() { $orders = Order::where('user_id', Auth::id())->get(); return view('order.index', compact('orders')); }
Dalam fail paparan, kami hanya perlu melintasi semua pesanan dan memaparkannya. Kod khusus adalah seperti berikut:
@foreach ($orders as $order) <tr> <td>{{ $order->id }}</td> <td>{{ $order->product->name }}</td> <td>{{ $order->quantity }}</td> <td>{{ $order->price }}</td> <td>{{ $order->status }}</td> </tr> @endforeach
(2) Buat pesanan untuk pembelian
Dalam fail pengawal, kami menulis kaedah beli() untuk melaksanakan fungsi meletakkan pesanan untuk membeli. Kod khusus adalah seperti berikut:
public function buy(Request $request, $id) { $product = Product::findOrFail($id); $this->validate($request, [ 'quantity' => 'required|integer|min:1|max:' . $product->stock, ]); $total_price = $product->price * $request->input('quantity'); $order = new Order; $order->user_id = Auth::id(); $order->product_id = $product->id; $order->quantity = $request->input('quantity'); $order->price = $total_price; $order->status = '待支付'; $order->save(); // 跳转到第三方支付页面 return redirect()->to('https://example.com/pay/' . $total_price); }
4. Modul pengurusan kumpulan
(1) Buat aktiviti kumpulan
Dalam fail pengawal, kami menulis kaedah create() untuk merealisasikan fungsi mencipta aktiviti kumpulan. Kod khusus adalah seperti berikut:
public function create(Request $request) { $product = Product::findOrFail($request->input('product_id')); $this->validate($request, [ 'group_size' => 'required|integer|min:2|max:' . $product->stock, 'group_price' => 'required|numeric|min:0', 'expired_at' => 'required|date|after:now', ]); $order = new Order; $order->user_id = Auth::id(); $order->product_id = $product->id; $order->quantity = $request->input('group_size'); $order->price = $request->input('group_price') * $request->input('group_size'); $order->status = '待成团'; $order->save(); $group = new Group; $group->order_id = $order->id; $group->size = $request->input('group_size'); $group->price = $request->input('group_price'); $group->expired_at = $request->input('expired_at'); $group->save(); return redirect()->route('product.show', $product->id)->withSuccess('拼团创建成功'); }
(2) Sertai aktiviti kumpulan
Dalam fail pengawal, kami menulis kaedah join() untuk melaksanakan fungsi menyertai aktiviti kumpulan. Kod khusus adalah seperti berikut:
public function join(Request $request, $id) { $group = Group::findOrFail($id); $user_id = Auth::id(); $product_id = $group->order->product_id; // 检查用户是否已参加该拼团活动 $order = Order::where('user_id', $user_id)->where('product_id', $product_id)->where('status', '待成团')->first(); if ($order) { return redirect()->route('product.show', $product_id)->withError('您已参加该拼团活动'); } // 检查拼团活动是否已过期 if ($group->expired_at < Carbon::now()) { return redirect()->route('product.show', $product_id)->withError('该拼团活动已过期'); } // 检查拼团人数是否已满 $count = Order::where('product_id', $product_id)->where('status', '待成团')->count(); if ($count >= $group->size) { return redirect()->route('product.show', $product_id)->withError('该拼团活动已满员'); } $order = new Order; $order->user_id = $user_id; $order->product_id = $product_id; $order->quantity = 1; $order->price = $group->price; $order->status = '待支付'; $order->group_id = $group->id; $order->save(); // 跳转到第三方支付页面 return redirect()->to('https://example.com/pay/' . $group->price); }
5 Modul pembayaran
Memandangkan artikel ini hanyalah demo, kami tidak menggunakan antara muka pembayaran pihak ketiga yang sebenar dan melompat terus ke halaman kejayaan pembayaran.
4. Ringkasan
Di atas adalah keseluruhan proses menggunakan rangka kerja Laravel untuk membangunkan platform pembinaan kumpulan dalam talian. Sudah tentu, artikel ini hanya menyediakan pelaksanaan fungsi asas, dan pembangunan sebenar perlu diperluas dan diperbaiki mengikut keperluan khusus. Saya berharap pembaca dapat lebih mengenali aplikasi rangka kerja Laravel melalui artikel ini, dan pembaca boleh terus meneroka dan mencuba dalam pembangunan sebenar.
Atas ialah kandungan terperinci Cara menggunakan Laravel untuk membangunkan platform perkongsian kumpulan dalam talian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!