手枪88 / yii2-shop
yii2-shop是一个网站商店后端模块
dev-master
2017-06-09 19:31 UTC
Requires
- php: >=5.4.0
- 2amigos/yii2-grid-view-library: *
- asofter/yii2-imperavi-redactor: dev-master@dev
- kartik-v/yii2-export: @dev
- kartik-v/yii2-grid: *
- kartik-v/yii2-mpdf: @dev
- kartik-v/yii2-widget-select2: *
- league/flysystem: *
- pistol88/yii2-field: *
- pistol88/yii2-filter: *
- pistol88/yii2-gallery: *
- pistol88/yii2-promocode: *
- pistol88/yii2-relations: *
- pistol88/yii2-seo: *
- pistol88/yii2-tree: *
- trntv/yii2-file-kit: @stable
- voskobovich/yii2-many-many-behavior: ^3.0
- yiisoft/yii2: *
- yiisoft/yii2-bootstrap: *
- zelenin/yii2-slug-behavior: ~1.5.1
Requires (Dev)
This package is auto-updated.
Last update: 2024-08-27 22:16:11 UTC
README
模块开发始于2017年4月24日,请在此处:dvizh/yii2-shop安装模块。建议从Dvizh仓库安装模块,那里有最新版本。
Yii2-shop
该模块代表了一个电子商务网站的后端。
包括(CRUD)管理
- 分类
- 制造商
- 商品
- 价格
- 筛选器(选项)
- 附加字段
如有需要,也可以安装我的其他模块
- pistol88/yii2-cart - 购物车
- pistol88/yii2-order - 订单
- pistol88/yii2-promocode - 促销代码
安装
建议在common/modules/pistol88下安装
git clone https://github.com/pistol88/yii2-shop.git
通过psr-4部分连接composer.json
"autoload": {
"psr-4": {
"pistol88\\shop\\": "common/modules/pistol88/yii2-shop"
}
}
该模块依赖于许多其他包,请将其从我的composer.json复制到自己的require部分。之后,别忘了执行composer update和每个模块的迁移。
如果您想通过composer将它们安装在vendor文件夹中而不做任何更改,请按标准安装:'php composer require pistol88/yii2-shop' 和 'php composer update' 在命令行中。
迁移
php yii migrate --migrationPath=vendor/pistol88/yii2-shop/migrations
配置
在配置(可能是bootstrap.php)中添加
Yii::setAlias('@storageUrl','/frontend/web/images');
在配置的modules部分添加
'modules' => [
//..
'shop' => [
'class' => 'pistol88\shop\Module',
'adminRoles' => ['administrator', 'superadmin', 'admin'],
],
'filter' => [
'class' => 'pistol88\filter\Module',
'adminRoles' => ['administrator'],
'relationFieldName' => 'category_id',
'relationFieldValues' =>
function() {
return \pistol88\shop\models\Category::buildTextTree();
},
],
'field' => [
'class' => 'pistol88\field\Module',
'relationModels' => [
'pistol88\shop\models\Product' => 'Продукты',
'pistol88\shop\models\Category' => 'Категории',
'pistol88\shop\models\Producer' => 'Производители',
],
'adminRoles' => ['administrator'],
],
'relations' => [
'class' => 'pistol88\relations\Module',
'fields' => ['code'],
],
'gallery' => [
'class' => 'pistol88\gallery\Module',
'imagesStorePath' => dirname(dirname(__DIR__)).'/storage/web/images/store',
'imagesCachePath' => dirname(dirname(__DIR__)).'/storage/web/images/cache',
'graphicsLibrary' => 'GD',
'placeHolderPath' => dirname(dirname(__DIR__)).'/storage/web/images/placeHolder.png',
],
//..
]
在shop中可以传递modelMap,其中指定所需的模型。还可以指定标准的yii控制器map、viewPath,以便在发展您的商店过程中用自己的控制器和视图替换。
在components部分
'components' => [
//..
'fileStorage' => [
'class' => '\trntv\filekit\Storage',
'baseUrl' => '@storageUrl/source',
'filesystem'=> function() {
$adapter = new \League\Flysystem\Adapter\Local(dirname(dirname(__DIR__)).'/frontend/web/images/source');
return new League\Flysystem\Filesystem($adapter);
},
],
//..
]
使用
- ?r=shop/product - 产品
- ?r=shop/category - 分类
- ?r=shop/producer - 制造商
- ?r=filter/filter - 筛选器(选项)
- ?r=field/field - 附加字段
小部件
- pistol88\shop\widgets\ShowPrice - 传递'model',输出价格。通过jQuery触发器与pistol88\cart\widgets\ChangeOptions相关联,可以确定选择的修改,并动态更改价格。
一个商品的示例卡片,其中包含所有商店和购物车小部件,它们协同工作并动态更改彼此的数据。
<?php
use pistol88\shop\widgets\ShowPrice;
use pistol88\cart\widgets\BuyButton;
use pistol88\cart\widgets\TruncateButton;
use pistol88\cart\widgets\CartInformer;
use pistol88\cart\widgets\ElementsList;
use pistol88\cart\widgets\ChangeCount;
use pistol88\cart\widgets\ChangeOptions;
$product = \pistol88\shop\models\Product::findOne(1); //from controller
?>
<div class="site-index">
<h1><?=$product->name;?></h1>
<h2>Shop</h2>
<div class="block row">
<h3>ShowPrice</h3>
<?=ShowPrice::widget(['model' => $product]);?>
</div>
<h2>Cart</h2>
<div class="block row">
<div class="col-md-3">
<h3>ChangeCount</h3>
<?=ChangeCount::widget(['model' => $product]);?>
</div>
<div class="col-md-3">
<h3>ChangeOptions</h3>
<?=ChangeOptions::widget(['model' => $product]);?>
</div>
<div class="col-md-3">
<h3>BuyButton</h3>
<?=BuyButton::widget(['model' => $product]);?>
</div>
<div class="col-md-3">
<h3>TruncateButton</h3>
<?=TruncateButton::widget();?>
</div>
<div class="col-md-3">
<h3>CartInformer</h3>
<?=CartInformer::widget();?>
</div>
<div class="col-md-3">
<h3>ElementsList</h3>
<?=ElementsList::widget(['type' => 'dropdown']);?>
</div>
</div>
<style>
.block {
border: 2px solid blue;
}
</style>
</div>