onurokkyay / yii2-shopping
Yii2 购物模块
Requires
- php: >=7.0
- yiisoft/yii2: ~2.0.13
Requires (Dev)
- phpunit/phpunit: 8.*.*
This package is auto-updated.
Last update: 2024-09-23 20:19:38 UTC
README
Yii2 购物模块
Yii2 KOU E-Ticaret Sitesi
我们是一个四人小组完成了这个项目。
模块
180202052-Melih Çalışkan-> Products-> 列出产品,添加到购物车,为管理员添加产品选项卡
180202039-Onur Okyay-> Shopping-> 列出购物车中的产品,购买,显示购买历史
180202105-Sabri Kusay Gülmez-> Category-> 列出类别,根据选择的类别列出产品,为管理员添加类别
180202026-Imran Kucur-> Reviews-> 为每个产品添加评论和评分,显示选定产品的所有评论
User-> 注册-登录,我的账户选项卡
安装
卸载Vagrant后,使用ssh连接并进入终端,然后输入以下内容。
composer require melih058/yii2-migrations "dev-main"
composer require melih058/yii2-products "dev-main"
composer require sabsay03/yii2-categories "dev-main"
composer require imrankucur/yii2-reviews "dev-main"
composer require sabsay03/yii2-user "dev-main"
composer require onurokkyay/yii2-shopping "dev-main"
Advanced中的vendor目录中应生成以下文件。
Advanced->backend->config->main.php中应按以下方式引用模块。
'modules' => [
'products' => [
'class'=>'melih058\products\Module'
],
'shopping' => [
'class' => 'onurokkyay\shopping\Module',
],
'user' => [
'class' => 'sabsay03\user\Module',
],
'categories' => [
'class' => 'sabsay03\categories\Module',
],
'reviews' => [
'class' => 'imrankucur\reviews\Module',
],
]
迁移
在Advanced内部(cd /var/www/advanced)在终端中输入以下命令。
在phpmyadmin中进入user部分并使用root登录后,创建一个名为yii2advanced的新数据库。
php yii migrate --migrationPath=@melih058/migrations/migrations
看到7个新迁移后,输入yes确认,然后在phpmyadmin中检查表格。
网站外观
将以下内容全部复制并粘贴到advanced->backend->views->layout->main.php中。
<?php
/* @var $this \yii\web\View */
/* @var $content string */
use backend\assets\AppAsset;
use yii\helpers\Html;
use yii\bootstrap\Nav;
use yii\bootstrap\NavBar;
use yii\widgets\Breadcrumbs;
use common\widgets\Alert;
AppAsset::register($this);
?>
<?php $this->beginPage() ?>
<!DOCTYPE html>
<html lang="<?= Yii::$app->language ?>">
<head>
<meta charset="<?= Yii::$app->charset ?>">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<?php $this->registerCsrfMetaTags() ?>
<title><?= Html::encode($this->title) ?></title>
<?php $this->head() ?>
</head>
<body>
<?php $this->beginBody() ?>
<div class="wrap">
<?php
NavBar::begin([
'brandLabel' => '<class="img-responsive"/>Admin',
'brandUrl' => 'http://advanced/backend/web/index.php?r=user/user/index',
'options' => [
'class' => 'navbar-inverse navbar-fixed-top',
],
]);
$menuItems = [
['label' => 'Ana Sayfa', 'url' => ['/site/index']],
['label' => 'Ürünler', 'url' => ['/products/products/index']],
['label' => 'Kategoriler', 'url' => ['/categories/categories/index']],
];
if (Yii::$app->user->isGuest) {
$menuItems[] = ['label' => 'Giriş Yap', 'url' => ['/site/login']];
$menuItems[] = ['label' => 'Kayıt Ol', 'url' => ['/site/signup']];
} else {
$menuItems[] = ['label' => 'Sepetim', 'url' => ['/shopping/shopping/index']];
$menuItems[] = ['label' => 'Sipariş Geçmişim', 'url' => ['/shopping/purchasehistory/index']];
$menuItems[] = ['label' => 'Hesabım', 'url' => ['/user/user/view']];
$menuItems[] = '<li>'
. Html::beginForm(['/site/logout'], 'post')
. Html::submitButton(
'Çıkış Yap (' . Yii::$app->user->identity->username . ')',
['class' => 'btn btn-link logout']
)
. Html::endForm()
. '</li>';
}
echo Nav::widget([
'options' => ['class' => 'navbar-nav navbar-right'],
'items' => $menuItems,
]);
NavBar::end();
?>
<div class="container">
<?= Breadcrumbs::widget([
'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [],
]) ?>
<?= Alert::widget() ?>
<?= $content ?>
</div>
</div>
<footer class="footer">
<div class="container ">
<p class="pull-left">© <?= Html::encode(Yii::$app->name) ?> <?= date('Y') ?></p>
<p class="pull-right"><?= Yii::powered() ?></p>
</div>
</footer>
<?php $this->endBody() ?>
</body>
</html>
<?php $this->endPage() ?>
将以下内容全部复制并粘贴到advanced->backend->views->site->index.php中。
<?php
/* @var $this yii\web\View */
$this->title = 'KOU E-Ticaret';
?>
<div class="site-index">
<div class="jumbotron">
<h1>Hoşgeldiniz</h1>
<p><a class="btn btn-lg btn-success" href=/backend/web/index.php?r=products/products/index>Alışverişe Başla!</a></p>
<p><a class="btn btn-lg btn-success" href=/backend/web/index.php?r=categories/categories/index>Kategoriler</a></p>
</div>
</div>
注册
从以下链接注册。
http://advanced/frontend/web/index.php?r=site%2Fsignup
然后进入phpmyadmin,在user表中将status从9改为10。
注册完成后,从以下链接登录。
http://advanced/backend/web/index.php?r=site%2Flogin
由于第一个注册的用户在user表中的id为1,所以id为1的用户是管理员。管理员可以使用网站左上角的管理功能。其他用户不能使用此选项卡。 管理员用户名:admin 密码:12345678
Yii2 Shopping 模块
登录后,我的购物车和购买历史选项卡将变为活动状态。
购物车页面
advanced/backend/web/index.php?r=shopping/purchasehistory/index
使用ListView::widget显示购物车中的所有产品。
shoppingcart表中保存当前userid(与user表中的id匹配)和添加到购物车的productid(与products表中的id匹配)。
点击删除按钮可以删除产品。
点击“完成购物”按钮可以购买所有产品。shoppingcart表中的所有与登录用户匹配的userid值被移除并添加到purchasehistory表中。添加后,从shoppingcart表中删除与登录用户匹配的所有值。
购物按钮将导向Purchase.php,并触发ShoppingcartController中的actionPurchase。数据库操作如下。
public function actionPurchase()
{
$uid=Yii::$app->user->id;
$sql = "select productid from shoppingcart where userid='$uid) . '";
$result=Yii::$app->db
->createCommand($sql)
->queryColumn();
foreach ($result as $row) {
$sql1 = "insert into purchasehistory (userid,productid) values ( '$uid) . ','$row) . ')";
$result=Yii::$app->db
->createCommand($sql1)
->execute();
}
$sql2 = "delete from shoppingcart where userid='$uid) . '";
$result=Yii::$app->db
->createCommand($sql2)
->execute();
}
购物车页面
订单历史页面
http://advanced/backend/web/index.php?r=shopping/shopping/index
使用ListView::widget显示与当前userid匹配的所有购买产品。
purchasehistory表中列出了与当前userid匹配的所有行(与products表中的id匹配)。



