Rumah >rangka kerja php >YII >Buat kedai dalam talian menggunakan rangka kerja Yii

Buat kedai dalam talian menggunakan rangka kerja Yii

WBOY
WBOYasal
2023-06-21 17:53:171602semak imbas

Sebagai pembangun web, pembelajaran dan latihan menggunakan rangka kerja PHP sudah pasti penting. Di antara banyak rangka kerja PHP, rangka kerja Yii ialah rangka kerja yang cekap, elegan dan selamat dengan pangkalan pengguna yang luas.

Dalam artikel ini, saya akan berkongsi cara menggunakan rangka kerja Yii untuk membuat aplikasi pusat membeli-belah dalam talian asas. Aplikasi ini akan mempunyai fungsi pusat membeli-belah asas seperti pengurusan pengguna, pengurusan produk dan fungsi troli beli-belah. Aplikasi ini boleh digunakan sebagai amalan pengenalan untuk pemula untuk mempelajari rangka kerja Yii.

Pasang rangka kerja Yii

Sebelum mula menggunakan rangka kerja Yii, kita perlu memasang rangka kerja terlebih dahulu. Rangka kerja Yii menyediakan pelbagai kaedah pemasangan, kaedah yang paling biasa digunakan ialah memasang menggunakan Komposer. Sebelum pemasangan, kami perlu mengesahkan bahawa Komposer dipasang.

Kita boleh menggunakan arahan berikut untuk memasang rangka kerja Yii:

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

Arahan di atas akan mencipta aplikasi asas. Anda boleh mengesahkan sama ada rangka kerja Yii berjaya dipasang dengan melawati http://localhost/basic.

Reka bentuk jadual data dan pengisian data

Sebelum membuat aplikasi pusat membeli-belah dalam talian, kita perlu membuat jadual data yang berkaitan dengan pusat membeli-belah dan mengisi data. Artikel ini akan menggunakan MySQL sebagai pangkalan data dan mencipta jadual data berikut:

  • Jadual pengguna: menyimpan maklumat pengguna, seperti nama pengguna, kata laluan dan e-mel.
  • Jadual produk: menyimpan maklumat produk, seperti nama, harga dan keterangan.
  • Jadual pesanan: menyimpan maklumat pesanan, seperti ID pengguna, ID produk dan kuantiti pesanan.
  • Jadual troli: menyimpan maklumat troli beli-belah, seperti ID pengguna, ID produk dan kuantiti, dsb.

Menambahkan indeks yang sesuai pada jadual data di atas boleh meningkatkan kecekapan pertanyaan.

Berikut ialah penyataan SQL penciptaan jadual untuk jadual data di atas:

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;

Sekarang, kita perlu mengisi data untuk menguji aplikasi. Tambahkan sekurang-kurangnya satu rekod pengguna pada jadual pengguna dan sekurang-kurangnya satu rekod produk pada jadual produk. Kami akan menggunakan pengguna dan produk ini sebagai data ujian untuk baki artikel ini.

Mencipta Pengawal Pengguna

Kami akan mulakan dengan mencipta Pengawal Pengguna. Dalam rangka kerja Yii, pengawal ialah komponen teras yang mengendalikan permintaan aplikasi. Pengawal bertanggungjawab untuk mengesan jenis permintaan dan memanggil kaedah operasi tindak balas berdasarkan permintaan.

Sekarang, kami mencipta UserController dan menambah kaedah tindakan asas. Kami akan menggunakan sambungan yiiwebController untuk mencipta pengawal.

Dalam Yii, nama kelas pengawal biasanya ditambah dengan akhiran Pengawal, yang boleh menerangkan dengan lebih baik fungsi yang dilaksanakan oleh kelas. Berikut ialah kod asas kelas 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
    }
}

Dalam kod di atas, kami telah menambah tiga kaedah operasi asas. Kaedah actionIndex() akan menjadikan fail paparan index.php. Ini ialah nama kaedah tindakan lalai. Kaedah actionLogin() dan actionRegister() akan digunakan untuk log masuk dan pendaftaran pengguna.

Sekarang, kita perlu mencipta fail paparan index.php. Lihat fail adalah output kaedah tindakan dalam pengawal. Kami akan menggunakan kaedah Yii::$app->view->render() yang disediakan oleh rangka kerja Yii untuk memaparkan paparan.

Buat fail index.php dalam folder paparan/pengguna dan tambah kod berikut:

<?php

use yiihelpersHtml;

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

Kod di atas akan memaparkan mesej alu-aluan ringkas pada penyemak imbas.

Mencipta Pengawal dan Paparan Produk

Sekarang, kita akan beralih kepada mencipta Pengawal dan Paparan Produk. Kami akan menggunakan sambungan yiidataActiveDataProvider untuk mendapatkan data senarai produk.

Buat pengawal ProductController dan tambah kaedah tindakan berikut:

<?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
    }
}

Seperti yang ditunjukkan dalam kod, kami mula-mula menggunakan Product::find() untuk mendapatkan semua produk. Kami kemudian meletakkan data senarai produk dalam ActiveDataProvider dan menghantarnya ke paparan. Selepas ini, kami mencipta kaedah actionAddtocart() untuk menambah item pada troli beli-belah.

Kita perlu mencipta folder produk dan mencipta fail paparan index.php di bawah folder ini. Kami menggunakan widget GridView yang akan memaparkan senarai produk berdasarkan data yang disediakan oleh DataProvider. Kami juga menambah butang untuk menambah produk pada troli.

Berikut ialah kod untuk fail 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}',
        ],
    ],
]); ?>

Kini kami boleh mengesahkan paparan dengan melawati http://localhost/basic/product/index dalam penyemak imbas diberikan dengan betul.

Buat pengawal troli beli-belah dan lihat

Kami memerlukan pengawal troli beli-belah dan paparan untuk menguruskan item yang ditambahkan pada troli beli-belah di pusat membeli-belah. Kami akan menggunakan session untuk menyimpan data troli beli-belah.

Kami mencipta pengawal CartController dan menambah kaedah operasi berikut:

<?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
    }
}

Dalam kod di atas, kami mula-mula mendapatkan data troli beli-belah yang disimpan dalam sesi. Dalam kaedah actionAdd($id), kami akan menambahkan produk dengan nombor ID yang ditentukan pada troli beli-belah. Dalam kaedah actionRemove($id), kami akan mengalih keluar item dengan nombor ID yang ditentukan daripada troli beli-belah.

Seterusnya, kita perlu mencipta folder troli dan mencipta fail paparan index.php di bawah folder ini. Kami menggunakan widget ListView yang akan memaparkan senarai troli beli-belah berdasarkan data troli beli-belah yang disimpan dalam sesi. Kami juga menambah beberapa butang untuk menambah atau mengurangkan bilangan item dalam troli beli-belah atau untuk mengalih keluar item daripada troli beli-belah.

Berikut ialah kod paparan/cart/index.php fail:

<?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框架的入门实践。当然,在实际应用中,我们仍需要添加更多功能来满足商城的需求。

Atas ialah kandungan terperinci Buat kedai dalam talian menggunakan rangka kerja Yii. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn