作為一名Web開(kāi)發(fā)者,學(xué)習(xí)和實(shí)踐使用PHP框架無(wú)疑是必不可少的。在眾多PHP框架中,Yii框架是一款高效,優(yōu)雅,安全的框架,擁有廣泛的用戶群體。
在本文中,我將分享如何使用Yii框架來(lái)創(chuàng)建一個(gè)基礎(chǔ)在線商城應(yīng)用程序。該應(yīng)用程序?qū)⒕邆浠镜纳坛枪δ埽缬脩艄芾恚a(chǎn)品管理和購(gòu)物車等功能。該應(yīng)用程序可以作為初學(xué)者學(xué)習(xí)Yii框架的入門實(shí)踐。
安裝Yii框架
在開(kāi)始使用Yii框架之前,我們需要首先安裝該框架。Yii框架提供了多個(gè)安裝方法,最常用的方法是使用Composer安裝。在安裝前,我們需要確認(rèn)已安裝Composer。
我們可以使用以下命令來(lái)安裝Yii框架:
composer create-project --prefer-dist yiisoft/yii2-app-basic basic
登錄后復(fù)制
以上命令將會(huì)創(chuàng)建一個(gè)基礎(chǔ)應(yīng)用程序。你可以通過(guò)訪問(wèn)http://localhost/basic來(lái)確認(rèn)Yii框架是否安裝成功。
數(shù)據(jù)表設(shè)計(jì)和數(shù)據(jù)填充
在創(chuàng)建在線商城應(yīng)用程序前,我們需要?jiǎng)?chuàng)建與商城相關(guān)的數(shù)據(jù)表,以及填充數(shù)據(jù)。本文將使用MySQL做為數(shù)據(jù)庫(kù),并創(chuàng)建以下數(shù)據(jù)表:
User表: 存儲(chǔ)用戶信息,如用戶名,密碼和電子郵件等。Product表: 存儲(chǔ)商品信息,如名稱,價(jià)格和描述等。Order表: 存儲(chǔ)訂單信息,如用戶ID,商品ID和訂購(gòu)數(shù)量等。Cart表: 存儲(chǔ)購(gòu)物車信息,如用戶ID,商品ID和數(shù)量等。
給以上數(shù)據(jù)表添加適當(dāng)?shù)乃饕梢蕴岣卟樵冃省?/p>
下面是以上數(shù)據(jù)表的建表SQL語(yǔ)句:
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;
登錄后復(fù)制
現(xiàn)在,我們需要填充數(shù)據(jù)以測(cè)試應(yīng)用程序。給user表添加至少一個(gè)用戶記錄,給product表添加至少一個(gè)產(chǎn)品記錄。在本文的剩余部分,我們將使用該用戶和產(chǎn)品作為測(cè)試數(shù)據(jù)。
創(chuàng)建用戶控制器
我們將從創(chuàng)建用戶控制器開(kāi)始。在Yii框架中,控制器是處理應(yīng)用程序請(qǐng)求的核心組件。控制器負(fù)責(zé)檢測(cè)請(qǐng)求類型,并根據(jù)請(qǐng)求調(diào)用響應(yīng)的操作方法。
現(xiàn)在,我們創(chuàng)建UserController控制器并添加基本操作方法。我們將使用yiiwebController擴(kuò)展來(lái)創(chuàng)建控制器。
在Yii中,控制器類名通常會(huì)加上Controller后綴,這樣可以更好地描述該類實(shí)現(xiàn)的功能。下面是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
}
}
登錄后復(fù)制
在以上代碼中,我們添加了三個(gè)基本操作方法。actionIndex()方法將渲染index.php視圖文件。這是默認(rèn)的操作方法名稱。actionLogin()和actionRegister()方法將用于用戶登錄和注冊(cè)。
現(xiàn)在,我們需要?jiǎng)?chuàng)建index.php視圖文件。視圖文件是控制器中操作方法的輸出結(jié)果。我們將使用Yii框架提供的Yii::$app->view->render()方法來(lái)渲染視圖。
在views/user文件夾下創(chuàng)建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>
登錄后復(fù)制
以上代碼將會(huì)在瀏覽器上顯示一條簡(jiǎn)單的歡迎信息。
創(chuàng)建產(chǎn)品控制器和視圖
現(xiàn)在,我們將繼續(xù)創(chuàng)建產(chǎn)品控制器和視圖。我們將使用yiidataActiveDataProvider擴(kuò)展來(lái)獲取產(chǎn)品列表數(shù)據(jù)。
創(chuàng)建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
}
}
登錄后復(fù)制
如代碼所示,我們首先使用Product::find()獲取所有產(chǎn)品。然后,我們將產(chǎn)品列表數(shù)據(jù)放在ActiveDataProvider中并將其傳遞給視圖。此后,我們創(chuàng)建actionAddtocart()方法以用于向購(gòu)物車中添加商品。
我們需要?jiǎng)?chuàng)建product文件夾并在該文件夾下創(chuàng)建index.php視圖文件。我們使用GridView小部件,該小部件將根據(jù)dataProvider提供的數(shù)據(jù)渲染產(chǎn)品列表。我們還添加一個(gè)按鈕用于將產(chǎn)品添加到購(gòu)物車中。
以下是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}',
],
],
]); ?>
登錄后復(fù)制
現(xiàn)在,我們可以在瀏覽器中訪問(wèn)http://localhost/basic/product/index來(lái)確認(rèn)該視圖是否被正確渲染。
創(chuàng)建購(gòu)物車控制器和視圖
我們需要一個(gè)購(gòu)物車控制器和視圖來(lái)管理商城中添加到購(gòu)物車中的商品。我們將使用session來(lái)存儲(chǔ)購(gòu)物車數(shù)據(jù)。
我們創(chuàng)建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
}
}
登錄后復(fù)制
在以上代碼中,我們首先獲取session中存儲(chǔ)的購(gòu)物車數(shù)據(jù)。在actionAdd($id)方法中,我們將會(huì)添加指定ID號(hào)的商品到購(gòu)物車中。在actionRemove($id)方法中,我們將會(huì)從購(gòu)物車中移除指定ID號(hào)的商品。
接下來(lái),我們需要?jiǎng)?chuàng)建cart文件夾,并在該文件夾下創(chuàng)建index.php視圖文件。我們使用ListView小部件,該小部件將根據(jù)session中存儲(chǔ)的購(gòu)物車數(shù)據(jù)渲染購(gòu)物車列表。我們還添加了一些按鈕用于增加或減少購(gòu)物車中的商品數(shù)量或刪除購(gòu)物車中的商品。
以下是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.',
]) ?>
登錄后復(fù)制
在views/cart文件夾下創(chuàng)建_cart_item.php視圖文件,該文件將被用于渲染購(gòu)物車列表中的每一行。以下是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(); ?>
登錄后復(fù)制
以上代碼將會(huì)在瀏覽器中顯示購(gòu)物車列表,用戶可以在該列表中執(zhí)行增加或減少商品數(shù)量的操作,也可以刪除購(gòu)物車中已有商品。
完成在線商城應(yīng)用程序
現(xiàn)在,我們已經(jīng)完成了基礎(chǔ)的在線商城應(yīng)用程序,該應(yīng)用程序擁有用戶管理,產(chǎn)品管理和購(gòu)物車等基礎(chǔ)功能。該應(yīng)用程序可以作為初學(xué)者學(xué)習(xí)和實(shí)踐Yii框架的入門實(shí)踐。當(dāng)然,在實(shí)際應(yīng)用中,我們?nèi)孕枰砑痈喙δ軄?lái)滿足商城的需求。
以上就是使用Yii框架創(chuàng)建在線商城的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注www.xfxf.net其它相關(guān)文章!






