如何使用Laravel開發一個線上投票系統
引言:
隨著網路的發展,越來越多的事物都可以在線上完成,其中包括投票。線上投票系統可以方便、有效率地收集大量使用者的意見和回饋。本文將介紹如何使用Laravel框架來開發一個基本的線上投票系統,並提供具體程式碼範例。
一、環境建置與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
模型和對應的資料遷移檔案:
Option遷移檔案中,定義
options表格的欄位:
public function up() { Schema::create('options', function (Blueprint $table) { $table->id(); $table->unsignedBigInteger('poll_id'); $table->string('name'); $table->timestamps(); }); }
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');
。
本文介紹了使用Laravel框架如何開發一個基本的線上投票系統。透過配置環境、建立模型、遷移和控制器以及編寫視圖和路由,我們實現了基本的投票功能。您可以在此基礎上進一步擴展和完善系統,例如增加用戶鑑權、展示投票結果等功能。希望這篇文章能對您的Laravel開發之旅有所幫助。
以上是如何使用Laravel開發一個線上投票系統的詳細內容。更多資訊請關注PHP中文網其他相關文章!