>PHP 프레임워크 >YII >Yii 프레임워크를 사용하여 온라인 상점 만들기

Yii 프레임워크를 사용하여 온라인 상점 만들기

WBOY
WBOY원래의
2023-06-21 17:53:171606검색

웹 개발자로서 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, 주문 수량 등 주문 정보를 저장합니다.
  • Cart 테이블: 사용자 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;

이제 애플리케이션 테스트를 위해 데이터를 채워야 합니다. 사용자 테이블에 하나 이상의 사용자 레코드를 추가하고 제품 테이블에 하나 이상의 제품 레코드를 추가합니다. 이 사용자와 제품을 이 기사의 나머지 부분에 대한 테스트 데이터로 사용할 것입니다.

사용자 컨트롤러 만들기

사용자 컨트롤러를 만드는 것부터 시작하겠습니다. Yii 프레임워크에서 컨트롤러는 애플리케이션 요청을 처리하는 핵심 구성 요소입니다. 컨트롤러는 요청 유형을 감지하고 요청에 따라 응답 작업 메서드를 호출하는 역할을 담당합니다.

이제 UserController를 생성하고 기본 액션 메서드를 추가합니다. yiiwebController 확장을 사용하여 컨트롤러를 생성하겠습니다.

Yii에서는 일반적으로 컨트롤러 클래스 이름 뒤에 Controller가 붙는데, 이는 클래스에서 구현하는 기능을 더 잘 설명할 수 있습니다. 다음은 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
    }
}

위 코드에는 세 가지 기본 작업 방법을 추가했습니다. 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>

위 코드는 브라우저에 간단한 환영 메시지를 표시합니다.

Product Controller 및 View 생성

이제 Product Controller 및 View 생성을 진행하겠습니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.