首頁 > php框架 > Laravel > 如何使用Laravel開發一個線上投票系統

如何使用Laravel開發一個線上投票系統

WBOY
發布: 2023-11-02 18:31:56
原創
1276 人瀏覽過

如何使用Laravel開發一個線上投票系統

如何使用Laravel開發一個線上投票系統

引言:
隨著網路的發展,越來越多的事物都可以在線上完成,其中包括投票。線上投票系統可以方便、有效率地收集大量使用者的意見和回饋。本文將介紹如何使用Laravel框架來開發一個基本的線上投票系統,並提供具體程式碼範例。

一、環境建置與Laravel安裝:

  1. 確保您的機器上已經安裝了PHP和Composer。如果沒有,請先安裝。
  2. 開啟命令列窗口,使用Composer安裝Laravel:
    composer global require laravel/installer
  3. 安裝完成後,在命令列中輸入以下命令以創建一個新的Laravel專案:
    laravel new votingsystem
  4. #進入專案目錄:
    cd votingsystem
  5. 啟動Laravel開發伺服器:
    php artisan serve
  6. 開啟瀏覽器,造訪http://localhost:8000,如果看到Laravel的歡迎頁面,說明環境搭建成功。

二、資料庫準備:

  1. 在專案根目錄中,開啟.env文件,配置資料庫連線資訊。修改以下行:

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=voting_system
    DB_USERNAME=root
    DB_PASSWORD=
    登入後複製
  2. 建立一個名為voting_system的資料庫。

三、建立投票相關的模型、遷移和控制器:

  1. 在命令列中輸入以下命令以建立一個Poll模型和對應的資料遷移檔案:
    php artisan make:model Poll -m
  2. 在產生的遷移檔案中,定義polls表格的字段:

    public function up()
    {
        Schema::create('polls', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->timestamps();
        });
    }
    登入後複製
  3. 執行資料庫遷移:
    php artisan migrate
  4. 建立一個PollController控制器,並且加入createstore方法:

    php artisan make:controller PollController --resource
    登入後複製
  5. #在PollController中,加入createstore方法的實現,以便於建立和保存投票:

    <?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);
        }
    }
    登入後複製
  6. 建立Option模型和對應的資料遷移檔案:
    ##php artisan make:model Option -m
  7. 在產生的

    Option遷移檔案中,定義options表格的欄位:

    public function up()
    {
        Schema::create('options', function (Blueprint $table) {
            $table->id();
            $table->unsignedBigInteger('poll_id');
            $table->string('name');
            $table->timestamps();
        });
    }
    登入後複製

  8. 執行資料庫遷移:

  9. php artisan migrate
  10. #在

    Poll模型中,加入與Option#模型的關聯關係:

    public function options()
    {
        return $this->hasMany(Option::class);
    }
    登入後複製

四、建立視圖與路由:

  1. 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>
    登入後複製

  2. routes/web.php檔案中,新增以下路由:

    Route::resource('poll', 'PollController');
    登入後複製
  3. 在命令列中執行以下命令以刷新路由快取:

  4. php artisan route:cache
五、測試:

    #開啟瀏覽器,造訪
  1. http://localhost:8000/poll/create
  2. 輸入投票標題和選項,點擊"新增選項"按鈕可以動態新增選項。
  3. 填寫完畢後,點擊"提交"按鈕,系統會將投票儲存到資料庫中,並跳到投票詳情頁。
結論:

本文介紹了使用Laravel框架如何開發一個基本的線上投票系統。透過配置環境、建立模型、遷移和控制器以及編寫視圖和路由,我們實現了基本的投票功能。您可以在此基礎上進一步擴展和完善系統,例如增加用戶鑑權、展示投票結果等功能。希望這篇文章能對您的Laravel開發之旅有所幫助。

(註:以上程式碼範例僅為參考,請依實際情況做適當調整。)

以上是如何使用Laravel開發一個線上投票系統的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板