作為一個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做為資料庫,並建立以下資料表:
為上述資料表新增適當的索引可以提高查詢效率。
下面是以上資料表的建表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;
現在,我們需要填入資料來測試應用程式。為user表新增至少一個使用者記錄,為product表新增至少一個產品記錄。在本文的剩餘部分,我們將使用該使用者和產品作為測試資料。
建立使用者控制器
我們將從建立使用者控制器開始。在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>
以上程式碼將會在瀏覽器上顯示簡單的歡迎訊息。
建立產品控制器和視圖
現在,我們將繼續建立產品控制器和視圖。我們將使用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()方法以用於在購物車中添加商品。
我們需要建立product資料夾並在該資料夾下建立index.php檢視檔。我們使用GridView小工具,該小工具將根據dataProvider提供的資料渲染產品清單。我們還添加一個按鈕用於將產品添加到購物車中。
以下是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來確認該視圖是否被正確渲染。
建立購物車控制器和視圖
我們需要一個購物車控制器和視圖來管理商城中添加到購物車中的商品。我們將使用session來儲存購物車資料。
我們建立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 } }
在上述程式碼中,我們首先取得session中儲存的購物車資料。在actionAdd($id)方法中,我們將會加入指定ID號碼的商品到購物車中。在actionRemove($id)方法中,我們將會從購物車中移除指定ID號的商品。
接下來,我們需要建立cart資料夾,並在該資料夾下建立index.php檢視檔。我們使用ListView小工具,該小工具將根據session中儲存的購物車資料渲染購物車清單。我們還添加了一些按鈕用於增加或減少購物車中的商品數量或刪除購物車中的商品。
以下是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中文網其他相關文章!