ホームページ PHPフレームワーク YII Yii フレームワークを使用して Q&A ウェブサイトを作成する

Yii フレームワークを使用して Q&A ウェブサイトを作成する

Jun 21, 2023 am 09:36 AM
作成する yii フレームワーク Q&Aサイト

Yii フレームワークは、開発者が高性能でスケーラブルな Web アプリケーションを迅速に構築できる強力な PHP フレームワークです。この記事では、Yii フレームワークを使用して Q&A ウェブサイトを作成する方法を紹介します。

  1. 環境の準備

開始する前に、PHP や MySQL などの必要なソフトウェアやツールがローカル開発環境で正しく構成されていることを確認する必要があります。同時に、その後の開発作業を容易にするために Yii フレームワークをインストールする必要もあります。

Yii フレームワークのインストールは非常に簡単です。次のコマンドを実行するだけです:

composer create-project yiisoft/yii2-app-basic <project_name>
ログイン後にコピー

ここで、<project_name> は現在のプロジェクトの名前です。

  1. データベース設計

Q&A Web サイトを作成する前に、関連するデータベース構造を設計する必要があります。この記事では、次のデータベース テーブルを使用します:

  • user: ユーザー名、パスワード、電子メールなどを含むユーザー情報の保存に使用されます;
  • question: に使用されます。質問の保存 質問のタイトル、内容、公開時間などの情報;
  • answer: 回答内容、回答時間などの回答情報を保存するために使用されます。

ここでは、バックエンド データベースとして MySQL を使用し、次のコマンドを使用して対応するデータベースとテーブルを作成します。

CREATE DATABASE IF NOT EXISTS my_db;
USE my_db;

CREATE TABLE IF NOT EXISTS `user` (
  `id` INT UNSIGNED AUTO_INCREMENT,
  `username` VARCHAR(64) NOT NULL,
  `password` VARCHAR(64) NOT NULL,
  `email` VARCHAR(64) NOT NULL,
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
);

CREATE TABLE IF NOT EXISTS `question` (
  `id` INT UNSIGNED AUTO_INCREMENT,
  `title` VARCHAR(255) NOT NULL,
  `content` TEXT,
  `user_id` INT UNSIGNED NOT NULL,
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  FOREIGN KEY (`user_id`) REFERENCES user(`id`)
);

CREATE TABLE IF NOT EXISTS `answer` (
  `id` INT UNSIGNED AUTO_INCREMENT,
  `content` TEXT,
  `question_id` INT UNSIGNED NOT NULL,
  `user_id` INT UNSIGNED NOT NULL,
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  FOREIGN KEY (`question_id`) REFERENCES question(`id`),
  FOREIGN KEY (`user_id`) REFERENCES user(`id`)
);
ログイン後にコピー

テーブル内の外部キーを次のように設定していることに注意してください。異なるデータシートを関連付けます。

  1. モデルを作成する

Yii フレームワークでは、モデルはデータベースを操作するために最も一般的に使用されるツールです。以前に作成したデータベーステーブルを操作するには、対応するモデルファイルを作成する必要があります。

アプリケーション ルート ディレクトリの models フォルダーに、3 つのモデル ファイル User.phpQuestion.php を作成します。回答.phpUser.php を例にとると、コードは次のとおりです。

<?php
namespace appmodels;

use yiidbActiveRecord;

class User extends ActiveRecord
{
    public function rules()
    {
        return [
            [['username', 'password', 'email'], 'required'],
            ['email', 'email'],
            ['username', 'unique'],
        ];
    }

    public static function findByUsername($username)
    {
        return static::findOne(['username' => $username]);
    }

    public function validatePassword($password)
    {
        return $this->password === md5($password);
    }

    public function getQuestions()
    {
        return $this->hasMany(Question::className(), ['user_id' => 'id']);
    }

    public function getAnswers()
    {
        return $this->hasMany(Answer::className(), ['user_id' => 'id']);
    }
}
ログイン後にコピー

このファイルでは、モデルの属性、検証ルール、クエリ メソッドと関係などを定義します。

  1. コントローラーの作成

コントローラーは、ルーティングとリクエストへの応答を処理するために使用されるツールです。アプリケーションのルート ディレクトリの controllers フォルダーに、3 つのコントローラー ファイル SiteController.phpQuestionController.phpAnswerController.php を作成します。 。 SiteController.php を例にとると、コードは次のとおりです。

<?php
namespace appcontrollers;

use yiiwebController;

class SiteController extends Controller
{
    public function actionIndex()
    {
        return $this->render('index');
    }
}
ログイン後にコピー

このファイルでは、ホームページ テンプレートをレンダリングするための actionIndex という名前のメソッドを定義します。

  1. ビューの作成

ビューはアプリケーションのユーザー インターフェイス部分であり、コンテンツをレンダリングするために対応するビュー ファイルを作成する必要があります。アプリケーションのルート ディレクトリの views フォルダーに、前の 3 つのフォルダーの作成に対応する sitequestionanswer という 3 つのフォルダーを作成します。コントローラー。

views/site フォルダーに、ホームページ テンプレートをレンダリングするための index.php という名前のファイルを作成します。コードは次のとおりです。

<h1>Welcome to the Question & Answer website!</h1>
ログイン後にコピー

views/question フォルダー内に、質問リスト ページをレンダリングするための index.php という名前のファイルを作成します。コードは次のとおりです。

<h1>Questions</h1>

<?php foreach ($questions as $question): ?>
  <div>
    <h2><?= $question->title ?></h2>
    <p><?= $question->content ?></p>
  </div>
<?php endforeach; ?>
ログイン後にコピー

views/answer フォルダーに、回答編集ページをレンダリングするための create.php という名前のファイルを作成します。コードは次のとおりです:

<h1>Create Answer</h1>

<?= $this->render('_form', ['model' => $model]) ?>
ログイン後にコピー
  1. ルーティングの作成

Yii フレームワークでは、ルーティングを使用して URL アドレスを対応するコントローラーとメソッドにマッピングします。アプリケーションのルート ディレクトリの config フォルダーにある web.php ファイルに、対応するルーティング ルールを作成する必要があります。コードは次のとおりです:

return [
    'components' => [
        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
                '' => 'site/index',
                'question' => 'question/index',
                'answer/create/<question_id:d+>' => 'answer/create',
            ],
        ],
    ],
];
ログイン後にコピー

answer/create ルートで動的パラメータ question_id を使用したことに注意してください。このパラメータは、回答の作成時に使用されます。

  1. 認証システムを作成する

Q&A Web サイトで、ユーザーは質問したり回答したりするためにログインする必要があります。ユーザーのログインおよび登録機能を実装するには、基本的な認証システムを作成する必要があります。

SiteController.php に、ログイン ページと登録ページをレンダリングするための 2 つのメソッド actionLoginactionSignup を追加しました。 UserController.php に、ユーザー登録リクエストを処理するための actionCreate という名前のメソッドを追加しました。特定のコードの実装は省略されています。

  1. Q&A 機能の実装

Q&A Web サイトでは、ユーザーは質問と回答を行う必要があります。これら 2 つの操作を実装するには、関連する関数を作成する必要があります。

QuestionController.php に、質問リストと質問編集ページをレンダリングするための 2 つのメソッド actionIndexactionCreate を追加しました。 QuestionController.php で、質問作成リクエストを処理するための actionCreate というメソッドを作成しました。特定のコードの実装は省略されています。

AnswerController.php で、回答作成リクエストを処理するための actionCreate という名前のメソッドを作成しました。特定のコードの実装は省略されています。

  1. テスト

上記の開発作業を経て、基本的な Q&A ウェブサイトが完成しました。 http://localhost/<project_name> にアクセスするとホームページが開き、http://localhost/<project_name>/question にアクセスすると質問リストが開きます。登録ユーザーを通じて質問や回答をすることもできます。

以上がYii フレームワークを使用して Q&A ウェブサイトを作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Pythonで定数を作成するにはどうすればよいですか? Pythonで定数を作成するにはどうすればよいですか? Aug 29, 2023 pm 05:17 PM

定数と変数は、プログラミングでデータ値を保存するために使用されます。変数は通常、時間の経過とともに変化する値を指します。定数は、プログラムの実行中に値を変更できない変数の一種です。 Python で使用できる組み込み定数は 6 つだけです。False、True、None、NotImplemented、Ellipsis(...)、__debug__ です。これらの定数とは別に、Python には定数値を格納するための組み込みデータ型がありません。例 定数の例を以下に示します。False=100 が出力されます。 SyntaxError:cannotassigntoFalseFalse は、ブール値を格納するために使用される Python の組み込み定数です。

最新の iOS 17 で iPhone をカスタマイズする方法 最新の iOS 17 で iPhone をカスタマイズする方法 Sep 21, 2023 am 08:17 AM

iPhone で通話をカスタマイズする方法 Apple の iOS 17 では、iPhone の通話画面の外観をカスタマイズできる連絡先ポスターと呼ばれる新機能が導入されています。この機能を使用すると、選択した写真、色、フォント、ミー文字を連絡先カードとして使用してポスターをデザインできます。そのため、電話をかけると、受信者の iPhone にあなたのカスタム画像が想像どおりに表示されます。独自の連絡先ポスターを保存されているすべての連絡先と共有するか、誰が閲覧できるかを選択できます。同様に、通話交換中に他の人の連絡先ポスターも表示されます。さらに、Apple では、個々の連絡先に特定の連絡先の写真を設定し、それらの連絡先から電話をかけることができます

Realme Phoneでフォルダーを作成するにはどうすればよいですか? Realme Phoneでフォルダーを作成するにはどうすればよいですか? Mar 23, 2024 pm 02:30 PM

タイトル: Realme Phone 初心者ガイド: Realme Phone でフォルダーを作成する方法?今日の社会において、携帯電話は人々の生活に欠かせないツールとなっています。人気のスマートフォン ブランドとして、Realme Phone はそのシンプルで実用的なオペレーティング システムでユーザーに愛されています。 Realme 携帯電話を使用する過程で、多くの人が携帯電話上のファイルやアプリケーションを整理する必要がある状況に遭遇する可能性があり、フォルダーを作成するのが効果的な方法です。この記事では、ユーザーが携帯電話のコンテンツをより適切に管理できるように、Realme 携帯電話にフォルダーを作成する方法を紹介します。いいえ。

GIMPでピクセルアートを作成する方法 GIMPでピクセルアートを作成する方法 Feb 19, 2024 pm 03:24 PM

この記事は、Windows でのピクセル アート作成に GIMP を使用することに興味がある場合に役立ちます。 GIMP は、無料でオープンソースであるだけでなく、美しい画像やデザインを簡単に作成できる有名なグラフィック編集ソフトウェアです。 GIMP は、初心者にもプロのデザイナーにも同様に適していることに加えて、描画と作成のための唯一の構成要素としてピクセルを利用するデジタル アートの形式であるピクセル アートの作成にも使用できます。 GIMP でピクセル アートを作成する方法 Windows PC で GIMP を使用してピクセル アートを作成する主な手順は次のとおりです。 GIMP をダウンロードしてインストールし、アプリケーションを起動します。新しいイメージを作成します。幅と高さのサイズを変更します。鉛筆ツールを選択します。ブラシの種類をピクセルに設定します。設定

Gree+ でファミリーを作成する方法 Gree+ でファミリーを作成する方法 Mar 01, 2024 pm 12:40 PM

「Gree+ ソフトウェアでファミリーを作成する方法を知りたい」という友達がたくさんいました。操作方法は次のとおりです。詳しく知りたい友達は、一緒に見に来てください。まず、携帯電話で Gree+ ソフトウェアを開き、ログインします。次に、ページ下部のオプション バーで、右端の [My] オプションをクリックして、個人アカウント ページに入ります。 2. マイページにアクセスすると、「ファミリー」の下に「ファミリーを作成」という項目があるので、それをクリックして入力します。 3. 次にファミリーを作成するページにジャンプし、表示に従って入力ボックスに設定するファミリー名を入力し、入力後右上の「保存」ボタンをクリックします。 4. 最後に、ページの下部に「正常に保存しました」というプロンプトが表示され、ファミリが正常に作成されたことが示されます。

ハイチャートを使用してガント チャートを作成する方法 ハイチャートを使用してガント チャートを作成する方法 Dec 17, 2023 pm 07:23 PM

Highcharts を使用してガント チャートを作成する方法には、特定のコード サンプルが必要です。はじめに: ガント チャートは、プロジェクトの進捗状況や時間管理を表示するためによく使用されるチャート形式です。タスクの開始時刻、終了時刻、進捗状況を視覚的に表示できます。 Highcharts は、豊富なチャート タイプと柔軟な構成オプションを提供する強力な JavaScript チャート ライブラリです。この記事では、Highcharts を使用してガント チャートを作成する方法と具体的なコード例を紹介します。 1. ハイチャート

iPhone 用の連絡先ポスターを作成する方法 iPhone 用の連絡先ポスターを作成する方法 Mar 02, 2024 am 11:30 AM

iOS17 では、Apple は一般的に使用される電話アプリと連絡先アプリに連絡先ポスター機能を追加しました。この機能を使用すると、ユーザーは連絡先ごとにパーソナライズされたポスターを設定できるため、アドレス帳がより視覚的で個人的なものになります。連絡先ポスターは、ユーザーが特定の連絡先をより迅速に識別して見つけるのに役立ち、ユーザー エクスペリエンスを向上させます。この機能により、ユーザーは自分の好みやニーズに応じて各連絡先に特定の写真やロゴを追加でき、アドレス帳のインターフェイスがより鮮明になり、iOS17 では Apple は iPhone ユーザーに自分自身を表現する新しい方法を提供し、パーソナライズ可能な連絡先ポスターを追加しました。連絡先ポスター機能を使用すると、他の iPhone ユーザーに電話をかけるときに、独自のパーソナライズされたコンテンツを表示できます。あなた

Django の概要: コマンド ラインを使用して最初の Django プロジェクトを作成する Django の概要: コマンド ラインを使用して最初の Django プロジェクトを作成する Feb 19, 2024 am 09:56 AM

Django プロジェクトの旅を始めましょう: コマンド ラインから開始して、最初の Django プロジェクトを作成します。Django は、強力で柔軟な Web アプリケーション フレームワークです。Python をベースにしており、Web アプリケーションの開発に必要な多くのツールと機能を提供します。この記事では、コマンド ラインから最初の Django プロジェクトを作成する方法を説明します。始める前に、Python と Django がインストールされていることを確認してください。ステップ 1: プロジェクト ディレクトリを作成する まず、コマンド ライン ウィンドウを開き、新しいディレクトリを作成します。

See all articles