Heim  >  Artikel  >  PHP-Framework  >  So entwickeln Sie ein Online-Abstimmungssystem mit Laravel

So entwickeln Sie ein Online-Abstimmungssystem mit Laravel

WBOY
WBOYOriginal
2023-11-02 18:31:561216Durchsuche

So entwickeln Sie ein Online-Abstimmungssystem mit Laravel

So entwickeln Sie mit Laravel ein Online-Abstimmungssystem

Einführung:
Mit der Entwicklung des Internets können immer mehr Dinge online erledigt werden, einschließlich Abstimmungen. Online-Abstimmungssysteme können bequem und effizient Meinungen und Feedback einer großen Anzahl von Benutzern sammeln. In diesem Artikel wird die Verwendung des Laravel-Frameworks zur Entwicklung eines grundlegenden Online-Abstimmungssystems vorgestellt und spezifische Codebeispiele bereitgestellt.

1. Umgebungseinrichtung und Laravel-Installation:

  1. Stellen Sie sicher, dass PHP und Composer auf Ihrem Computer installiert sind. Wenn nicht, installieren Sie es bitte zuerst.
  2. Öffnen Sie ein Befehlszeilenfenster und verwenden Sie Composer, um Laravel zu installieren:
    composer global require laravel/installercomposer 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. 运行数据库迁移:
    php artisan migrate
  9. 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. 在命令行中运行以下命令以刷新路由缓存:
    php artisan route:cache

五、测试:

  1. 打开浏览器,访问http://localhost:8000/poll/create
  2. Geben Sie nach Abschluss der Installation den folgenden Befehl in die Befehlszeile ein, um ein neues Laravel-Projekt zu erstellen :
  3. laravel neues Votingsystem
  4. Geben Sie das Projektverzeichnis ein:
  5. cd Votingsystem

Starten Sie den Laravel-Entwicklungsserver:
php artisan Serve

Öffnen Sie den Browser und besuchen Sie http://localhost:8000. Wenn Sie die Begrüßungsseite von Laravel sehen, bedeutet dies, dass die Umgebung erfolgreich eingerichtet wurde.

🎜🎜2. Datenbankvorbereitung: 🎜🎜🎜🎜Öffnen Sie im Projektstammverzeichnis die Datei .env und konfigurieren Sie die Datenbankverbindungsinformationen. Ändern Sie die folgenden Zeilen: 🎜rrreee🎜🎜Erstellen Sie eine Datenbank mit dem Namen voting_system. 🎜🎜🎜3. Erstellen Sie abstimmungsbezogene Modelle, Migrationen und Controller: 🎜🎜🎜Geben Sie die folgenden Befehle in die Befehlszeile ein, um ein Poll-Modell und entsprechende Datenmigrationsdateien zu erstellen: 🎜php artisan make:model Poll -m🎜🎜🎜In der generierten Migrationsdatei definieren Sie die Felder der polls-Tabelle: 🎜rrreee🎜🎜Datenbankmigration ausführen: 🎜php artisan migrate🎜🎜🎜Erstellen Sie einen <code>PollController-Controller und fügen Sie die Methoden create und store hinzu: 🎜rrreee🎜🎜🎜 in PollController , fügen Sie Implementierungen der Methoden <code>create und store hinzu, um das Erstellen und Speichern von Stimmen zu erleichtern: 🎜rrreee🎜🎜Erstellen Sie das Modell Option und entsprechende Datenmigrationsdatei: 🎜php artisan make:model Option -m🎜🎜🎜In der generierten Option-Migrationsdatei definieren Sie die Tabelle options Felder: 🎜rrreee🎜🎜Datenbankmigration ausführen: 🎜php artisan migrate🎜🎜🎜Fügen Sie im Poll-Modell eine Zuordnung mit dem Option-Modell hinzu Beziehung: 🎜rrreee🎜🎜🎜4. Erstellen Sie Ansichten und Routen: 🎜🎜🎜🎜Erstellen Sie im Verzeichnis resources/views einen Ordner mit dem Namen polls und erstellen Sie einen create.blade.php Datei anzeigen: 🎜rrreee🎜🎜🎜Fügen Sie in der Datei routes/web.php die folgenden Routen hinzu: 🎜rrreee🎜🎜Führen Sie in der Befehlszeile den folgenden Befehl aus So aktualisieren Sie den Routen-Cache: 🎜php artisan route:cache🎜🎜🎜5. Test: 🎜🎜🎜Öffnen Sie den Browser und besuchen Sie http://localhost:8000/poll/ createCode>. 🎜🎜Geben Sie den Abstimmungstitel und die Optionen ein und klicken Sie auf die Schaltfläche „Option hinzufügen“, um Optionen dynamisch hinzuzufügen. 🎜🎜Nach Abschluss des Ausfüllens klicken Sie auf die Schaltfläche „Senden“. Das System speichert die Abstimmung in der Datenbank und springt zur Seite mit den Abstimmungsdetails. 🎜🎜🎜Fazit: 🎜In diesem Artikel wird vorgestellt, wie man mit dem Laravel-Framework ein grundlegendes Online-Abstimmungssystem entwickelt. Durch die Konfiguration der Umgebung, die Erstellung von Modellen, Migrationen und Controllern sowie das Schreiben von Ansichten und Routen haben wir grundlegende Abstimmungsfunktionen implementiert. Auf dieser Basis können Sie das System weiter ausbauen und verbessern, etwa um Funktionen wie Benutzerauthentifizierung und Anzeige von Abstimmungsergebnissen. Ich hoffe, dieser Artikel wird Ihnen bei Ihrer Laravel-Entwicklungsreise hilfreich sein. 🎜🎜(Hinweis: Die obigen Codebeispiele dienen nur als Referenz. Bitte nehmen Sie entsprechend der tatsächlichen Situation entsprechende Anpassungen vor.)🎜

Das obige ist der detaillierte Inhalt vonSo entwickeln Sie ein Online-Abstimmungssystem mit Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn