Cara menggunakan Laravel untuk membangunkan sistem pengundian dalam talian
Pengenalan:
Dengan perkembangan Internet, lebih banyak perkara boleh dilakukan dalam talian, termasuk mengundi. Sistem pengundian dalam talian boleh mengumpul pendapat dan maklum balas daripada sebilangan besar pengguna dengan mudah dan cekap. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Laravel untuk membangunkan sistem pengundian dalam talian asas dan menyediakan contoh kod khusus.
1. Persediaan persekitaran dan pemasangan Laravel:
composer global require laravel/installer
laravel new votingsystem
cd votingsystem
php artisan serve
http://localhost:8000
,如果看到Laravel的欢迎页面,说明环境搭建成功。二、数据库准备:
在项目根目录中,打开.env
文件,配置数据库连接信息。修改以下行:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=voting_system DB_USERNAME=root DB_PASSWORD=
voting_system
的数据库。三、创建投票相关的模型、迁移和控制器:
Poll
模型和相应的数据迁移文件:php artisan make:model Poll -m
在生成的迁移文件中,定义polls
表的字段:
public function up() { Schema::create('polls', function (Blueprint $table) { $table->id(); $table->string('title'); $table->timestamps(); }); }
php artisan migrate
创建一个PollController
控制器,并添加create
和store
方法:
php artisan make:controller PollController --resource
在PollController
中,添加create
和store
方法的实现,以便于创建和保存投票:
<?php namespace AppHttpControllers; use IlluminateHttpRequest; use AppPoll; class PollController extends Controller { public function create() { return view('polls.create'); } public function store(Request $request) { $this->validate($request, [ 'title' => 'required' ]); $poll = Poll::create([ 'title' => $request->title ]); // 添加投票选项 foreach($request->options as $option) { $poll->options()->create([ 'name' => $option ]); } return redirect()->route('poll.show', $poll->id); } }
Option
模型和相应的数据迁移文件:php artisan make:model Option -m
在生成的Option
迁移文件中,定义options
表的字段:
public function up() { Schema::create('options', function (Blueprint $table) { $table->id(); $table->unsignedBigInteger('poll_id'); $table->string('name'); $table->timestamps(); }); }
php artisan migrate
在Poll
模型中,添加与Option
模型的关联关系:
public function options() { return $this->hasMany(Option::class); }
四、创建视图和路由:
在resources/views
目录下,创建一个名为polls
的文件夹,并在其中创建一个create.blade.php
视图文件:
<form action="{{ route('poll.store') }}" method="POST"> @csrf <label for="title">标题:</label> <input type="text" name="title"> <label for="options">选项:</label> <ul id="options"> <li> <input type="text" name="options[]"> </li> </ul> <button id="add-option" type="button">添加选项</button> <button type="submit">提交</button> </form> <script> document.getElementById('add-option').addEventListener('click', function() { var option = document.createElement('li'); option.innerHTML = '<input type="text" name="options[]">'; document.getElementById('options').appendChild(option); }); </script>
在routes/web.php
文件中,添加以下路由:
Route::resource('poll', 'PollController');
php artisan route:cache
五、测试:
http://localhost:8000/poll/create
Mulakan pelayan pembangunan Laravel:
Buka pelayar dan lawati http://localhost:8000 Jika anda melihat halaman alu-aluan Laravel, ini bermakna persekitaran telah berjaya disediakan.
🎜🎜2. Penyediaan pangkalan data: 🎜🎜🎜🎜Dalam direktori akar projek, buka fail.env
dan konfigurasikan maklumat sambungan pangkalan data. Ubah suai baris berikut: 🎜rrreee🎜🎜Buat pangkalan data bernama voting_system
. 🎜🎜🎜3 Cipta model, migrasi dan pengawal yang berkaitan dengan pengundian: 🎜🎜🎜Masukkan arahan berikut pada baris arahan untuk mencipta model Poll
dan fail migrasi data yang sepadan: 🎜php artisan make:model Poll -m
🎜🎜🎜Dalam fail migrasi yang dijana, takrifkan medan jadual polls
: 🎜rrreee🎜🎜Jalankan migrasi pangkalan data: 🎜php artisan migrate🎜🎜🎜Buat pengawal <code>PollController
dan tambah kaedah create
dan store
: 🎜rrreee🎜🎜🎜 dalam PollController , tambahkan pelaksanaan kaedah <code>create
dan store
untuk memudahkan penciptaan dan menyimpan undian: 🎜rrreee🎜🎜Buat model Option
dan Fail pemindahan data yang sepadan: 🎜php artisan make:model Option -m
🎜🎜🎜Dalam fail migrasi Option
yang dihasilkan, tentukan jadual options
Medan: 🎜rrreee🎜🎜Jalankan pemindahan pangkalan data: 🎜php artisan migrate
🎜🎜🎜Dalam model Poll
, tambahkan perkaitan dengan model Option
Hubungan: 🎜rrreee🎜🎜🎜4 Cipta paparan dan laluan: 🎜🎜🎜🎜Dalam direktori sumber/pandangan
, buat folder bernama polls
dan Cipta create.blade.php
lihat fail: 🎜rrreee🎜🎜🎜Dalam fail routes/web.php
, tambah laluan berikut: 🎜rrreee🎜🎜Dalam baris arahan Jalankan arahan berikut untuk memuat semula cache laluan: 🎜php artisan route:cache
🎜🎜🎜5 Ujian: 🎜🎜🎜Buka penyemak imbas dan lawati http://localhost:8000/poll/ createkod>. 🎜🎜Masukkan tajuk pengundian dan pilihan, dan klik butang "Tambah Pilihan" untuk menambah pilihan secara dinamik. 🎜🎜Setelah selesai mengisi, klik butang "Submit", sistem akan menyimpan undian ke pangkalan data dan melompat ke halaman butiran undian. 🎜🎜🎜Kesimpulan: 🎜Artikel ini memperkenalkan cara membangunkan sistem pengundian dalam talian asas menggunakan rangka kerja Laravel. Dengan mengkonfigurasi persekitaran, mencipta model, migrasi dan pengawal serta menulis pandangan dan laluan, kami melaksanakan fungsi asas pengundian. Anda boleh mengembangkan dan menambah baik lagi sistem atas dasar ini, seperti menambah fungsi seperti pengesahan pengguna dan paparan keputusan pengundian. Saya harap artikel ini akan membantu perjalanan pembangunan Laravel anda. 🎜🎜(Nota: Contoh kod di atas adalah untuk rujukan sahaja, sila buat pelarasan yang sesuai mengikut situasi sebenar.)🎜
Atas ialah kandungan terperinci Bagaimana untuk membangunkan sistem pengundian dalam talian menggunakan Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!