onurokkyay/yii2-shopping

Yii2 shopping Module

Installs: 6

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 1

Forks: 0

Open Issues: 0

Type:yii2-extension

dev-main 2021-03-23 13:12 UTC

This package is auto-updated.

Last update: 2024-05-23 19:40:01 UTC


README

Yii2 shopping Module

Yii2 KOU E-Ticaret Sitesi

Projeyi bir grup olarak 4 arkadaş yaptık.

Modüller:

180202052-Melih Çalışkan-> Products=> Ürünleri listeleme,Sepete Ekleme,Admin için Ürün Ekleme sekmesi

180202039-Onur Okyay-> Shopping=>Sepetteki ürünleri listeleme,Satın alma,Geçmiş satın alımları gösterme

180202105-Sabri Kusay Gülmez-> Category=> Kategori listeleme,Seçilen kategoriye göre ürünleri listeleme,Admin için Kategori Ekleme

180202026-Imran Kucur-> Reviews=>Her bir ürün için yorum ekleme ve puan verme,Seçilen ürüne yapılan tüm yorumları gösterme

User=> Kayıt-Giriş,Hesabım sekmesi

Kurulum

Vagrantı kaldırdıktan sonra ssh ile bağlanın ve terminalde advanced içine girdikten sonra(cd /var/www/advanced) aşağıdakileri yazınız.

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 içinde vendor klasöründe bu dosyaların oluşması gerekir

Advanced->backend->config->main.php içerisine modüller aşağıda belirtilen şekilde referans edilmelidir.

'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',
        ],
    ]

Migrations

Advancedin içindeyken (cd /var/www/advanced) terminale bu komutu yazınız.

advanced/phpmyadmin e user kısmına root yazıp giriş yaptıktan sonra yii2advanced adında yeni bir database oluşturun.

php yii migrate --migrationPath=@melih058/migrations/migrations

7 yeni migration gördükten sonra yes diyip onaylayın ve sonra tabloları phpmyadminde kontrol edin.

Site Görünüşü

advanced->backend->views->layout->main.php'nin içine aşağıdakilerin hepsini kopyalayıp yapıştırın.

<?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">&copy; <?= 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'nin içine aşağıdakilerin hepsini kopyalayıp yapıştırın.

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

Kayıt Olma

Aşağıdaki linkten kayıt olunuz.

http://advanced/frontend/web/index.php?r=site%2Fsignup

Sonra phpmyadmine girip user tablosunda status'u 9 dan 10 a çevirin.

Kayıt olma işlemi tamamlandıktan aşağıdaki linkten giriş yapınız.

http://advanced/backend/web/index.php?r=site%2Flogin

İlk kayıt olan kullanıcının user tablosundaki id'si 1 olduğu için 1 sayılır.Yani idsi 1 olan kullanıcı admindir.Sitede sol üstte bulunan admin özelliklerini kullanabilir.Diğer kullanıcılar bu sekmeyi kullanamaz. Admin kullanıcı adı: admin şifre: 12345678

Yii2 Shopping Modülü

Giriş yaptıktan sonra sepetim ve sipariş geçmişim sekmesi aktif olur.

Sepetim Sayfası

advanced/backend/web/index.php?r=shopping/purchasehistory/index

Sepetteki tüm ürünleri ListView::widget ile gösterir.

shoppingcart tablosunda güncel userid (user tablosundaki id ile eşleşir.) ile sepete eklenen ürün productid (products tablosundaki id ile eşleşir) tutulur.

Delete butonuna tıklayarak ürünü silebilirsiniz.

Alışverişi tamamla butonuna tıklayarak tüm ürünleri satın alabilirsiniz.shoppingcart tablosunda giriş yapmış olan kullanıcıya ait userid'li tüm değerler shoppingcart tablosundan alınır ve purchasehistory tablosuna eklenir.Eklendikten sonra shoppingcart'tan userid'si giriş yapan kullanıcıyla eşleşen tüm değerler silinir.

Alışveriş butonu Purchase.php'ye yönlendirir ve ShoppingcartController'daki actionPurchase çalışır.Veritabanı işlemleri aşağıdaki gibidir.

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();

    }
Sepetim Sayfası

SepetimSayfası

Sipariş Geçmişi Sayfası

http://advanced/backend/web/index.php?r=shopping/shopping/index

Güncel userid'ye ait satın alınan tüm ürünleri ListView::widget ile gösterir.

purchasehistory tablosunda güncel userid'ye (user tablosundaki id ile eşleşir.) ait olan tüm satırları (productid products tablosundaki id ile eşleşir) listeler.

Sipariş Geçmişi Sayfası

SiparişGeçmişi

Örnek shoppingcart tablosu

shoppingcart tablosu

Sepetim

Örnek purchasehistory tablosu

purchasehistory tablosu

SiparişGeçmişi