Fecmall

第 2 位会员

会员
个人信息
  • 加入于 2017-05-31 17:38:45
  • 城市 Qingdao
  • GitHub https://github.com/fecshop
  • 最后登录时间 8天前
  • 签名 净化自己,潜心编码
个人简介
Terry,Fecmall开源产品作者,12年电商经验一线程序员开发者,擅长规划产品,架构设计。
个人成就
  • 发表文章次数 744
  • 发布回复次数 5760
  • 个人主页浏览次数 683
local app 如何继承一个module,为fecshop的module添加新的controller6年前

@successgdc [#1楼](#comment1)

恩,用这种方式,同时也会存在一个问题controller中的getBlock()不可用

譬如:https://github.com/fecshop/yii2_fecshop/blob/master/app/appfront/modules/AppfrontController.php

因此可以在本地新建一个base controller , 继承模块原来的 base controller(上面的AppfrontController.php,就是module的 base controller),然后重写getBlock()方法。

public function getBlock($blockName = '')
    {
        if (!$blockName) {
            $blockName = $this->action->id;
        }
        if (!$this->blockNamespace) {
            $this->blockNamespace = Yii::$app->controller->module->blockNamespace;
        }
        if (!$this->blockNamespace) {
            throw new \yii\web\HttpException(406, 'blockNamespace is empty , you should config it in module->blockNamespace or controller blockNamespace ');
        }
        $viewId = $this->id;
        $viewId = str_replace('/', '\\', $viewId);
        $relativeFile = '\\'.$this->blockNamespace;
        $relativeFile .= '\\'.$viewId.'\\'.ucfirst($blockName);
        //查找是否在rewriteMap中存在重写
        $relativeFile = Yii::mapGetName($relativeFile);
        
        return new $relativeFile();
    }

否则将会找不到文件。

有没有通过积分或者其他虚拟货币进行支付的插件和模板6年前

积分从何而来?

购买产品赠送? 直接购买积分?

目前没有的

docker安装1.5.0.0,数据库倒入报错:Exception 'yii\db\Exception' with message 'SQLSTATE[HY000] [1130]6年前

@zxcv #10楼

执行

./yii migrate --interactive=0 --migrationPath=@fecshop/migrations/mysqldb

你这个步骤执行失败导致的,你可以去看看mysql fecshop数据库下面,是否存在这个数据库以及这个表就知道了,这个问题和版本没有关系,新版本并没有更新数据库文件。

docker安装1.5.0.0,数据库倒入报错:Exception 'yii\db\Exception' with message 'SQLSTATE[HY000] [1130]6年前

@zxcv [#7楼](#comment7)

./yii migrate --interactive=0 --migrationPath=@fecshop/migrations/mysqldb

这个步骤执行失败导致的

1.5.0.0 和1.4.6在安装方面没有什么区别,就是更新了一些代码

自己多比对下文档把,很多人都安装成功了。

docker安装1.5.0.0,数据库倒入报错:Exception 'yii\db\Exception' with message 'SQLSTATE[HY000] [1130]6年前

https://github.com/fecshop/yii2_fecshop_docker/blob/master/docker-compose.yml

mysql容器里面是有密码的

mysql:  
    image: mysql:5.7 
    volumes:  
      - ./db/mysql/data:/var/lib/mysql 
      - ./db/mysql/example_db:/var/example_db 
      - ./db/mysql/conf.d:/etc/mysql/conf.d      
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=fecshopxfd3ffaads123456
      - MYSQL_DATABASE=fecshop
    networks:
- code-network 

你的意思是,fecshop的common/config/main-local.php文件,你没有设置mysql的密码吧?

docker安装1.5.0.0,数据库倒入报错:Exception 'yii\db\Exception' with message 'SQLSTATE[HY000] [1130]6年前

这个报错的原因是php容器无法链接mysql的容器,你看一下mysql容器的状态

docker安装1.5.0.0,数据库倒入报错:Exception 'yii\db\Exception' with message 'SQLSTATE[HY000] [1130]6年前

如果不是上面问题导致的,自己搜搜一下 docker mysql is not allowed to connect to this MySQL server

docker安装1.5.0.0,数据库倒入报错:Exception 'yii\db\Exception' with message 'SQLSTATE[HY000] [1130]6年前

docker里面的一部分配置是在example_data 中修改,然后通过cp命令复制到app/fecshop文件夹中,我估计你没有复制进去

看一下 app/fecshop/common/config/main-local.php 和 example_data/fecshop/common/config/main-local.php 是否一样,不一样说明安装步骤中的复制覆盖执行失败。

'db' => [ 
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=mysql;dbname=fecshop',
            'username' => 'root',
            'password' => 'fecshopxfd3ffaads123456',
            'charset' => 'utf8',
        ],

上面是mysql的配置,host是mysql,docker会映射到mysql的容器中

docker安装1.5.0.0,数据库倒入报错:Exception 'yii\db\Exception' with message 'SQLSTATE[HY000] [1130]6年前

你应该是没有把修改的文件复制进去,覆盖原来的配置

如果要基于Fecshop开发一个多商户入驻系统,官方有什么建议吗?6年前

还有一种方式,就是同一个产品,在不同的仓库给予不同的sku编号,也有这样处理的

可以根据自己的情况进行选择

如果要基于Fecshop开发一个多商户入驻系统,官方有什么建议吗?6年前

如果你们是分仓的,那你要注意产品库存的问题

当时做www.quarkscm.com ,因为有很多海外仓,因此产品都加入了仓库选项

譬如:http://www.quarkscm.com/p-s371b-p-ES

这样带来的问题是,你的库存是分散的,在分类页面如果要做按照库存的某些搜索或者排序会带来一定的困难,就需要你用中间数据处理脚本处理出来,用于排序和搜索,类似于产品价格的排序(产品分为价格,特价,tier price,因此需要一个脚本每天泡一下计算出来,因为排序和搜索不要求100%正确,因此没有大问题)

如果要基于Fecshop开发一个多商户入驻系统,官方有什么建议吗?6年前

@successgdc [#4楼](#comment4)

问题:比如有个需求是不同商户的商品不能一起支付?

不能一起支付,但是都可以加入购物车,因此,你的购物车是允许多个商家的,因此 购物车的商户id,也是加到cart_items里面,你可以在购物车页面,将产品按照商家进行区域划分, 每个区域只能选择一个,通过radio选择一个商家进行支付

这个实现类似于多仓库的商城,如图:

将用户当前选择的仓库写入session,如果session中不存在,默认给予一个值即可。

最后你的订单中可以吧商家id写进去,订单产品表可以不写。因为你的需求订单只能一个商家。

如果要基于Fecshop开发一个多商户入驻系统,官方有什么建议吗?6年前

@shiningxiao #1楼

大致解决三块: 产品,订单,支付。

需要做一个商户后台,供商户上传产品,查看订单,以及支付状态等

产品表加一个字段,商户id,各个商户只能看自己的产品

订单产品表也需要加一个商户id,

新建商户表,里面有相应的商户的余额,用于结算

支付和物流比较也有一定的工作量

等等,b2b2c没有做过,了解的不够

论坛的贴子的管理的建议6年前

不搞那么复杂了,把这里当个简单论坛就好。

不过,你说的也好搞,直接用github的issue就可以

这个论坛采用的getyii搭建的,和v2ex类似的小型论坛,可以提问,也可以当成自己的小博客分享

admin 后台保存不了 tracking_number 的问题6年前

你这种方法,在yii2里面用,整体性更好,采纳你的写法。

admin 后台保存不了 tracking_number 的问题6年前

@successgdc #2楼

你说的不可以,指的是不能保存tracking_number,还是其他什么意思?

我本地是可以判断成功并保存de

admin 后台保存不了 tracking_number 的问题6年前

改成:

public function save(){
        $editForm = Yii::$app->request->post('editForm');
        $order_id = $editForm['order_id'];
        $orderModel = Yii::$service->order->getByPrimaryKey($order_id);
        if(is_array($editForm) && $orderModel['order_id']){
            foreach($editForm as $k => $v){
                if (property_exists($orderModel, $k)) {
                    $orderModel[$k] = $v;
                }
            } 
            $orderModel->save();
        }
        echo  json_encode([
            'statusCode'=>'200',
            'message'=>'save success',
        ]);
        exit;
    }

bug fixed:

https://github.com/fecshop/yii2_fecshop/commit/894b95d067fcdc8c9cba0a71471de67157a00be5

Your Site Analytics