How to use Laravel to develop an online voting system
Introduction:
With the development of the Internet, more and more things can be done online, including vote. Online voting systems can collect opinions and feedback from a large number of users conveniently and efficiently. This article will introduce how to use the Laravel framework to develop a basic online voting system and provide specific code examples.
1. Environment setup and Laravel installation:
composer global require laravel/installer
laravel new votingsystem
cd votingsystem
php artisan serve
http://localhost:8000
. If you see the Laravel welcome page, it means the environment is set up successfully. 2. Database preparation:
In the project root directory, open the .env
file and configure the database connection information. Modify the following lines:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=voting_system DB_USERNAME=root DB_PASSWORD=
voting_system
. 3. Create voting-related models, migrations and controllers:
Poll
model and Corresponding data migration file: php artisan make:model Poll -m
In the generated migration file, define the fields of the polls
table :
public function up() { Schema::create('polls', function (Blueprint $table) { $table->id(); $table->string('title'); $table->timestamps(); }); }
php artisan migrate
Create a PollController
controller and add create
and store
methods:
php artisan make:controller PollController --resource
In PollController
, add create
and store
Implementation of methods to facilitate creating and saving votes:
<?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
model and corresponding data migration files: php artisan make:model Option -m
In the generated Option
migration file, define the fields of the options
table:
public function up() { Schema::create('options', function (Blueprint $table) { $table->id(); $table->unsignedBigInteger('poll_id'); $table->string('name'); $table->timestamps(); }); }
php artisan migrate
In the Poll
model, add the Option
Model association:
public function options() { return $this->hasMany(Option::class); }
IV. Create views and routes:
In the resources/views
directory, Create a folder called polls
and create a create.blade.php
view file in it:
<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>
atroutes/web.php
file, add the following route:
Route::resource('poll', 'PollController');
php artisan route:cache
5. Test:
http://localhost:8000/poll/create
. Conclusion:
This article introduces how to develop a basic online voting system using the Laravel framework. By configuring the environment, creating models, migrations and controllers, and writing views and routes, we implemented basic voting functionality. You can further expand and improve the system on this basis, such as adding functions such as user authentication and display of voting results. I hope this article will be helpful to your Laravel development journey.
(Note: The above code examples are for reference only, please make appropriate adjustments according to the actual situation.)
The above is the detailed content of How to develop an online voting system using Laravel. For more information, please follow other related articles on the PHP Chinese website!