ホームページ  >  記事  >  PHPフレームワーク  >  Yii フレームワークを使用して結婚式計画 Web サイトを作成する

Yii フレームワークを使用して結婚式計画 Web サイトを作成する

WBOY
WBOYオリジナル
2023-06-21 08:48:211438ブラウズ

結婚式は誰にとっても人生の重要な瞬間です。ほとんどの人にとって、美しい結婚式は非常に重要です。結婚式を計画するとき、カップルは結婚式の規模や豪華さに注意を払うだけでなく、結婚式の詳細や個人的な体験にもさらに注意を払います。この問題を解決するために、多くのウェディング プランニング会社が独自の Web サイトを開設し、開発しています。この記事では、Yii フレームワークを使用して結婚式の企画 Web サイトを作成する方法を紹介します。

Yii フレームワークは高パフォーマンスな PHP フレームワークであり、そのシンプルさと使いやすさが開発者に深く愛されています。 Yii フレームワークを使用すると、高品質な Web サイトをより効率的に開発できます。ここでは、Yii フレームワークを使用して結婚式の企画 Web サイトを作成する方法を紹介します。

ステップ 1: Yii フレームワークをインストールする
まず、Yii フレームワークをインストールする必要があります。これは、composer:

composer create-project --prefer-dist yiisoft/yii2-app-basic basic

を通じてインストールするか、Yii フレームワーク圧縮パッケージをダウンロードしてサーバー ディレクトリに抽出できます。解凍後、次のコマンドを実行して必要な依存関係をインストールします。

php composer.phar install

ステップ 2: データベースと対応するテーブルを作成する
前のステップで、Yii フレームワークが正常にインストールされました。次に、データベースと対応するテーブルを作成する必要があります。 MySQL Workbench などのツールを使用して直接作成できます。

wedding という名前のデータベースを作成し、次の構造のテーブルを作成します。

CREATE TABLE IF NOT EXISTS `user` (
    `id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    `username` VARCHAR(255) NOT NULL,
    `password_hash` VARCHAR(255) NOT NULL,
    `email` VARCHAR(255) NOT NULL,
    `auth_key` VARCHAR(255) NOT NULL,
    `status` SMALLINT NOT NULL DEFAULT 10,
    `created_at` INT NOT NULL,
    `updated_at` INT NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `article` (
    `id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    `title` VARCHAR(255) NOT NULL,
    `content` TEXT NOT NULL,
    `status` SMALLINT NOT NULL DEFAULT 10,
    `created_at` INT NOT NULL,
    `updated_at` INT NOT NULL,
    `user_id` INT UNSIGNED NOT NULL,
    CONSTRAINT `fk_article_user_id` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

このうち、user テーブルにはユーザー情報が格納され、article テーブルには記事情報が格納されます。

ステップ 3: モデルを作成する
Yii フレームワークでは、モデルは MVC アーキテクチャの M (モデル) の一部であり、データの処理を担当します。 User と Article の 2 つのモデルを作成する必要があります。

class User extends ActiveRecord implements IdentityInterface
{
    public static function findIdentity($id)
    {
        return static::findOne($id);
    }

    public static function findIdentityByAccessToken($token, $type = null)
    {
        throw new NotSupportedException('"findIdentityByAccessToken" is not implemented.');
    }

    public function getId()
    {
        return $this->getPrimaryKey();
    }

    public function getAuthKey()
    {
        return $this->auth_key;
    }

    public function validateAuthKey($authKey)
    {
        return $this->getAuthKey() === $authKey;
    }

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

    public function validatePassword($password)
    {
        return Yii::$app->security->validatePassword($password, $this->password_hash);
    }
}

class Article extends ActiveRecord
{
    public function getUser()
    {
        return $this->hasOne(User::className(), ['id' => 'user_id']);
    }
}

上記のコードでは、ActiveRecord クラスを継承することによって、User と Article の 2 つのモデルを定義します。 User モデルは ID 認証用の IdentityInterface インターフェイスを実装し、Article モデルは getUser() メソッドを通じてユーザーと記事の間の関係を定義します。

ステップ 4: コントローラーとビューを作成する
Yii フレームワークでは、コントローラーは MVC アーキテクチャの C (コントローラー) の一部であり、受信した Web リクエストの処理を担当します。 UserController と ArticleController の 2 つのコントローラーと、対応するビューを作成する必要があります。

UserController は、ユーザー登録、ログイン、その他の操作を処理するために使用されます:

class UserController extends Controller
{
    public function actionSignup()
    {
        $model = new SignupForm();

        if ($model->load(Yii::$app->request->post()) && $model->signup()) {
            Yii::$app->session->setFlash('success', 'Thank you for registration. Please check your inbox for verification email.');
            return $this->goHome();
        }

        return $this->render('signup', [
            'model' => $model,
        ]);
    }

    public function actionLogin()
    {
        $model = new LoginForm();

        if ($model->load(Yii::$app->request->post()) && $model->login()) {
            return $this->goBack();
        }

        return $this->render('login', [
            'model' => $model,
        ]);
    }

    public function actionLogout()
    {
        Yii::$app->user->logout();

        return $this->goHome();
    }
}

ArticleController は、記事の編集、表示などの操作を処理するために使用されます:

class ArticleController extends Controller
{
    public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'only' => ['create', 'update'],
                'rules' => [
                    [
                        'actions' => ['create', 'update'],
                        'allow' => true,
                        'roles' => ['@'],
                    ],
                ],
            ],
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'delete' => ['POST'],
                ],
            ],
        ];
    }

    public function actionIndex()
    {
        $dataProvider = new ActiveDataProvider([
            'query' => Article::find(),
        ]);

        return $this->render('index', [
            'dataProvider' => $dataProvider,
        ]);
    }

    public function actionView($id)
    {
        return $this->render('view', [
            'model' => $this->findModel($id),
        ]);
    }

    public function actionCreate()
    {
        $model = new Article();

        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['view', 'id' => $model->id]);
        }

        return $this->render('create', [
            'model' => $model,
        ]);
    }

    public function actionUpdate($id)
    {
        $model = $this->findModel($id);

        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['view', 'id' => $model->id]);
        }

        return $this->render('update', [
            'model' => $model,
        ]);
    }

    public function actionDelete($id)
    {
        $this->findModel($id)->delete();

        return $this->redirect(['index']);
    }

    protected function findModel($id)
    {
        if (($model = Article::findOne($id)) !== null) {
            return $model;
        }

        throw new NotFoundHttpException('The requested page does not exist.');
    }
}

上記のコード内, より効率的な開発のために、AccessControl、ActiveDataProvider、VerbFilter などの Yii の一部の組み込みコンポーネントとオペレーションを使用します。

ステップ 5: ルーティングとデータベースを設定する
Yii フレームワークでは、ルーティング設定とデータベース接続設定を設定ファイルで設定する必要があります。次の 2 つのファイルを編集する必要があります。

/config/web.php:

return [
    'id' => 'basic',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'components' => [
        'request' => [
            'csrfParam' => '_csrf',
        ],
        'user' => [
            'identityClass' => 'appmodelsUser',
            'enableAutoLogin' => true,
        ],
        'session' => [
            // this is the name of the session cookie used for login on the frontend
            'name' => 'wedding_session',
        ],
        'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
                [
                    'class' => 'yiilogFileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
                '' => 'article/index',
                '<controller>/<action>' => '<controller>/<action>',
                '<controller>/<action>/<id:d+>' => '<controller>/<action>',
            ],
        ],
        'db' => require __DIR__ . '/db.php',
    ],
    'params' => $params,
];

上記のコードでは、データベース、URL ルーティング、およびその他の情報を設定して、プロジェクトがスムーズに走行できます。 Yii フレームワークがデータベースと対話できるように、データベース接続情報を /config/db.php ファイルで設定する必要があります。

最後に、ユーザーが登録に成功した後に確認メールを受信できるように、/config/params.php でメール送信情報を構成する必要もあります。

この時点で、Yii フレームワークを使用してウェディング プランニング Web サイトを作成するプロセス全体が完了しました。この記事の導入により、Yii フレームワークの基本的な使用法と、簡単な結婚式計画 Web サイトの作成方法をすでに理解できました。より複雑でプロフェッショナルな結婚式 Web サイトを作成したい場合は、Yii フレームワークをさらに学習して Web アプリケーションをより効率的に開発する必要があります。

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

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