ホームページ  >  記事  >  PHPフレームワーク  >  Yii フレームワークを使用してオンラインストアを作成する

Yii フレームワークを使用してオンラインストアを作成する

WBOY
WBOYオリジナル
2023-06-21 17:53:171551ブラウズ

Web 開発者として、PHP フレームワークの使用を学習し、実践することは間違いなく不可欠です。多くの PHP フレームワークの中でも、Yii フレームワークは効率的でエレガントで安全なフレームワークであり、幅広いユーザー ベースを持っています。

この記事では、Yii フレームワークを使用して基本的なオンライン モール アプリケーションを作成する方法を共有します。アプリケーションには、ユーザー管理、商品管理、ショッピングカート機能などのモールの基本機能が搭載されます。このアプリケーションは、初心者が Yii フレームワークを学ぶための入門練習として使用できます。

Yii フレームワークをインストールする

Yii フレームワークを使い始める前に、まずフレームワークをインストールする必要があります。 Yii フレームワークには複数のインストール方法が用意されており、最も一般的に使用される方法は Composer を使用してインストールすることです。インストールする前に、Composer がインストールされていることを確認する必要があります。

次のコマンドを使用して Yii フレームワークをインストールできます:

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

上記のコマンドは基本的なアプリケーションを作成します。 http://localhost/basic にアクセスすると、Yii フレームワークが正常にインストールされたかどうかを確認できます。

データテーブルの設計とデータの入力

オンラインモールアプリケーションを作成する前に、モールに関連するデータテーブルを作成し、データを入力する必要があります。この記事では、データベースとして MySQL を使用し、次のデータ テーブルを作成します。

  • ユーザー テーブル: ユーザー名、パスワード、電子メールなどのユーザー情報を保存します。
  • 製品テーブル: 名前、価格、説明などの製品情報を保存します。
  • 注文テーブル: ユーザー ID、製品 ID、注文数量などの注文情報を保存します。
  • カート テーブル: ユーザー ID、製品 ID、数量などのショッピング カート情報を保存します。

上記のデータ テーブルに適切なインデックスを追加すると、クエリの効率が向上します。

以下は、上記のデータ テーブルを作成する SQL ステートメントです:

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `product` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `price` float(10,2) NOT NULL,
  `description` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `order` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `product_id` int(11) NOT NULL,
  `quantity` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `user_id` (`user_id`),
  KEY `product_id` (`product_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `cart` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `product_id` int(11) NOT NULL,
  `quantity` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `user_id` (`user_id`),
  KEY `product_id` (`product_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

次に、アプリケーションをテストするためにデータを入力する必要があります。少なくとも 1 つのユーザー レコードを user テーブルに追加し、少なくとも 1 つの製品レコードを product テーブルに追加します。このユーザーと製品をこの記事の残りの部分のテスト データとして使用します。

ユーザー コントローラーの作成

ユーザー コントローラーを作成することから始めます。 Yii フレームワークでは、コントローラーはアプリケーションのリクエストを処理するコアコンポーネントです。コントローラーは、リクエストの種類を検出し、リクエストに基づいて応答操作メソッドを呼び出す責任があります。

ここで、UserController コントローラーを作成し、基本的なアクション メソッドを追加します。 yiiwebController 拡張機能を使用してコントローラーを作成します。

Yii では、通常、コントローラーのクラス名にコントローラーのサフィックスが追加されます。これにより、クラスによって実装された関数をより適切に説明できます。 UserController クラスの基本コードは次のとおりです。

<?php

namespace appcontrollers;

use yiiwebController;

class UserController extends Controller
{
    public function actionIndex()
    {
        return $this->render('index');
    }

    public function actionLogin()
    {
        // code for login logic
    }

    public function actionRegister()
    {
        // code for registration logic
    }
}

上記のコードでは、3 つの基本的な操作メソッドを追加しました。 actionIndex() メソッドは、index.php ビュー ファイルをレンダリングします。これはデフォルトのアクションメソッド名です。 actionLogin() メソッドと actionRegister() メソッドは、ユーザーのログインと登録に使用されます。

次に、index.php ビュー ファイルを作成する必要があります。ビュー ファイルは、コントローラーのアクション メソッドの出力です。 Yii フレームワークによって提供される Yii::$app->view->render() メソッドを使用してビューをレンダリングします。

views/user フォルダーにindex.php ファイルを作成し、次のコードを追加します。

<?php

use yiihelpersHtml;

$this->title = 'User';
$this->params['breadcrumbs'][] = $this->title;
?>
<h1><?= Html::encode($this->title) ?></h1>
<p>
Welcome to the user homepage.
</p>

上記のコードは、ブラウザーに簡単なウェルカム メッセージを表示します。

プロダクト コントローラーとビューの作成

次に、プロダクト コントローラーとビューの作成に進みます。 yiidataActiveDataProvider 拡張機能を使用して製品リスト データを取得します。

ProductController コントローラーを作成し、次のアクション メソッドを追加します。

<?php

namespace appcontrollers;

use yiiwebController;
use appmodelsProduct;
use yiidataActiveDataProvider;

class ProductController extends Controller
{
    public function actionIndex()
    {
        $dataProvider = new ActiveDataProvider([
            'query' => Product::find(),
        ]);

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

    public function actionAddtocart($id)
    {
        // code for add to cart logic
    }
}

コードに示すように、最初に Product::find() を使用してすべての製品を取得します。次に、製品リスト データを ActiveDataProvider に配置し、ビューに渡します。この後、ショッピング カートに商品を追加するための actionAddtocart() メソッドを作成します。

製品フォルダーを作成し、このフォルダーの下にindex.phpビュー ファイルを作成する必要があります。 dataProvider によって提供されるデータに基づいて製品のリストを表示する GridView ウィジェットを使用します。商品をカートに追加するためのボタンも追加します。

次は、views/product/index.php ファイルのコードです:

<?php

use yiihelpersHtml;
use yiigridGridView;

$this->title = 'Product';
$this->params['breadcrumbs'][] = $this->title;
?>
<h1><?= Html::encode($this->title) ?></h1>

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        'id',
        'name',
        'price',
        'description',
        [
            'class' => 'yiigridActionColumn',
            'buttons' => [
                'addtocart' => function ($url, $model) {
                    return Html::a('Add to cart', ['product/addtocart', 'id' => $model->id]);
                }
            ],
            'template' => '{addtocart}',
        ],
    ],
]); ?>

ここで、http://localhost/basic/product/index にアクセスしてビューを確認できます。ブラウザは正しくレンダリングされます。

ショッピング カート コントローラーとビューを作成する

モール内のショッピング カートに追加された商品を管理するには、ショッピング カート コントローラーとビューが必要です。セッションを使用してショッピング カート データを保存します。

CartController コントローラーを作成し、次の操作メソッドを追加します。

<?php

namespace appcontrollers;

use yiiwebController;
use Yii;

class CartController extends Controller
{
    public function actionIndex()
    {
        $cart = Yii::$app->session->get('cart');
        return $this->render('index', [
            'cart' => $cart,
        ]);
    }

    public function actionAdd($id)
    {
        // code for add product to cart logic
    }

    public function actionRemove($id)
    {
        // code for remove product from cart logic
    }
}

上記のコードでは、最初にセッションに保存されているショッピング カート データを取得します。 actionAdd($id) メソッドでは、指定された ID 番号の商品をショッピング カートに追加します。 actionRemove($id) メソッドでは、指定された ID 番号を持つアイテムをショッピング カートから削除します。

次に、カートフォルダーを作成し、このフォルダーの下にindex.phpビューファイルを作成する必要があります。セッションに保存されたショッピング カート データに基づいてショッピング カート リストをレンダリングする ListView ウィジェットを使用します。また、カート内の商品の数を増減したり、カートから商品を削除したりするためのボタンもいくつか追加されました。

次は、views/cart/index.php ファイルのコードです:

<?php

use yiihelpersHtml;
use yiiwidgetsListView;

$this->title = 'Shopping Cart';
$this->params['breadcrumbs'][] = $this->title;
?>
<h1><?= Html::encode($this->title) ?></h1>

<?= ListView::widget([
    'dataProvider' => $dataProvider,
    'itemView' => '_cart_item',
    'emptyText' => 'Your cart is empty.',
]) ?>

在views/cart文件夹下创建_cart_item.php视图文件,该文件将被用于渲染购物车列表中的每一行。以下是views/cart/_cart_item.php文件的代码:

<?php

use yiihelpersHtml;
use yiiwidgetsActiveForm;

$form = ActiveForm::begin([
    'id' => 'cart-item-' . $model['id'],
]); ?>

<?= Html::a('Remove', ['cart/remove', 'id' => $model['id']]) ?>

<?= $model['name'] ?>

<?= $form->field($model, 'quantity')->textInput(['value' => $model['quantity']]) ?>

<?= Html::submitButton('Update') ?>

<?php ActiveForm::end(); ?>

以上代码将会在浏览器中显示购物车列表,用户可以在该列表中执行增加或减少商品数量的操作,也可以删除购物车中已有商品。

完成在线商城应用程序

现在,我们已经完成了基础的在线商城应用程序,该应用程序拥有用户管理,产品管理和购物车等基础功能。该应用程序可以作为初学者学习和实践Yii框架的入门实践。当然,在实际应用中,我们仍需要添加更多功能来满足商城的需求。

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

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