Fecmall

第 2 位会员

会员
个人信息
  • 加入于 2017-05-31 17:38:45
  • 城市 Qingdao
  • GitHub https://github.com/fecshop
  • 最后登录时间 9天前
  • 签名 净化自己,潜心编码
个人简介
Terry,Fecmall开源产品作者,12年电商经验一线程序员开发者,擅长规划产品,架构设计。
个人成就
  • 发表文章次数 744
  • 发布回复次数 5760
  • 个人主页浏览次数 683
google蜘蛛来抓取之后,报错,后面mongo里面的数据都没了。。7年前

你是否是docker安装的fecshop,如果是,那么这么几个地方查看问题,是哪里导致的

1.对于docker compose文件docker-compose.yml,你是否有改动,https://github.com/fecshop/yii2_fecshop_docker/blob/master/docker-compose.yml#L51:14

对于mongodb的配置为:

mongodb:
    image: mongo:3.7
    restart: always
    environment:
      - MONGO_DATA_DIR=/data/db
      - MONGO_LOG_DIR=/data/logs
    volumes:
      - ./db/mongodb/data:/data/db
      - ./db/mongodb/example_db:/data/example_db
      - ./db/mongodb/logs:/data/logs
      - ./db/mongodb/etc/mongod.conf:/etc/mongod.conf
    ports:
      - 27017:27017 
    networks:
      - code-network 

也就是将宿主主机的./db/mongodb/data(这个是你github下载fecshop docker的根目录)挂载到mongodb容器的/data/db中, 你是否进行了改动,或者将宿主主机的./db/mongodb/data进行了删除?

你查看一下./db/mongodb/data文件夹下面的内容。

后台保存产品信息出错7年前

出问题,先自己搜一下

新建的表block和service应该怎么选择?7年前

@hetao [#7楼](#comment7) 可以的,分层是为了方便解决问题。

1.眼前的问题,

2.将来业务做起来后的问题。

3.自己的问题,

4.团队协作的问题

等等

新建的表block和service应该怎么选择?7年前

@hetao #3楼 不是mvvm, 本来放到controller里面的代码,放到了block层,好处:

1.避免controller文件过大

2.fecshop小部件,需要使用block,也就是独立块,详细参看:http://www.fecshop.com/doc/fecshop-guide/instructions/cn-1.0/guide-fecshop_widget.html

fecshop小部件,生产出来,在其他的页面可以方便的引入调用,譬如:头部,尾部,菜单部分等。

fecshop怎么实现邮箱换手机验证码登陆7年前

回一下你这个问题吧,太小白化

1.用户注册,填写手机号。点击获取验证码,ajax发送请求给服务器php

2.php生成随机数字,将数字写入session

3.组织文字内容,然后通过api发送短信给用户(api由你购买的短信服务商提供)

4.用户查看手机,获取短信验证码,填写,提交

5.session验证是否一致,一致则通过

上面是完整的思路,实现自己去写代码去吧。

新建的表block和service应该怎么选择?7年前

@hetao #5楼 重新整理了一下,你回头重新看一下吧。

多去看源码和文档,带上自己的思考

新建的表block和service应该怎么选择?7年前

model层: 数据库抽象层,最小的操作粒度是表的增删改查

services层:最小的粒度是一个语言描述的功能粒度,譬如将一个产品加入购物车,生成一个订单等,这个都是对应到services层的一个函数,也就是一个一个的services的函数 ,该层,更像数据的生产方,提供一个一个的服务,供各个入口调用, services层只有一个

block层,controller层: 每个入口(appfront,apphtml5)都是独立的,独立的controller,独立的block

controller是控制层,action方法得到请求后,进行数据的处理,数据处理是在block层进行的, block调用services层的函数来满足自身需要

上面和你说了大致的调用结构,services层更像数据的生产层,block更像数据的组织层

services层的函数,是数据的生产层,services层的实现可以调用mysql的model,也可以调用mongodb的model,甚至远程api,这样就可以很方便的重构,譬如现在购物车模块用的是mysql实现的,后面业务增长了,我想换成redis,原来的mvc做这种改动是很麻烦的,但是,services层的存在,就可以很方便的切换, 譬如官方开发的redis cart:https://github.com/fecshop/yii2_fecshop_redis_cart ,services的好处很多,在实际开发的过程中会领略到的

另外block层,是不能直接调用model的,只能调用services层的方法。

多去看代码吧,这些层都是拍脑袋发热想出来的,都是为了解决实际的问题,几句话说不清楚。

多去看代码!!多去看代码!!多去看代码!! 代码会告诉你。

后台用户管理7年前

1.用户管理,那个是前端的用户

2.newsletter那个框框,你去数据库将相关数据删除就可以了,那个是为了测试xss攻击的测试数据

3.后台的用户管理在控制面板里面,演示demo地址,为了防止乱改密码,将后台的账户管理的权限禁掉了。

关于第三方支付接口的开发可否写一个说明文档7年前

@hetao #3楼 文档中存在的内容,还上来发帖问题,类似于无脑的帖子,本人一直都是持鄙视态度。

新建的表block和service应该怎么选择?7年前

你先去看文档去吧

http://www.fecshop.com/doc/fecshop-guide/develop/cn-1.0/guide-fecshop-service-abc.html

讨论这些问题,先带上你自己的思考后的结果,先去看文档,在去看代码,自己思考后,带上你的思考结论讨论

fecshop模板中$parentThis变量是在哪里定义的,有什么用途?7年前

@hetao [#3楼](#comment3) fecshop的源码,比较的扁平化,多读读源码,很容易理解的。

尽量的完善文档的内容,以及论坛帖子的内容,后面fecshop用的人多了,帖子内容多了, 大家可以搜索帖子解决问题,互相回帖解决问题, 就不需要我这样每天盯着了,目前只能我自己来回帖以及沉淀文档。

关于第三方支付接口的开发可否写一个说明文档7年前

看完之后,你就可以了解fecshop的原理,fecshop的支付是一个独立部分,是解耦的,你可以以独立扩展的方式做订单支付

上面的文档的底部有这么一句话:

如果您想开发一个新支付,可以参考下支付宝支付的整个步骤: Fecshop 支付宝支付开发思路 和 详细的文件结构 ,这个文章写得比较详细,可以了解整个流程。

关于第三方支付接口的开发可否写一个说明文档7年前

提问之前,请先去查阅开发文档和帮助文档:http://www.fecshop.com/doc/fecshop-guide/instructions/cn-1.0/guide-fecshop_payment_method.html

在后半部分有关于支付的介绍。

fecshop模板中$parentThis变量是在哪里定义的,有什么用途?7年前

进行了一系列的整理,加入了文档:fecshop 模板view文件前台

可以直接参看这个文档

fecshop模板中$parentThis变量是在哪里定义的,有什么用途?7年前

首先,你先了解一下fecshop的模板原理:http://www.fecshop.com/doc/fecshop-guide/instructions/cn-1.0/guide-fecshop_theme.html

下面以代码例子讲解一下这个$parentThis,在讲解之前,先从这样做的目的开始说起

1.首先,想说的是,对于mvc结构,在yii2框架中,视图部分是由layout 和具体的view文件组成,也就是两个文件, layout文件没有问题,非常简洁,代码不会很多,而对于view部分,html代码量还是非常大的,譬如产品页面的样式全部写到一个view文件里面,还是很庞大的,因此将view文件打碎成多个文件,这样会更好一些

2.另外,会存在某些块公用的调用,譬如头部和尾部,或者产品页面和分类页面都可以显示一个tab栏目,也就是各个页面的公用块,如果将这些公用快做成一个独立的方式,通过某个函数调取就可以顺利的引入,这样就会非常的方便,就像工厂生产出来,哪里用就哪里调用

3.对于一个独立块,麻雀虽小,五脏俱全,就像一个完整页面一样,需要动态计算数据,也需要展示view部分,因此,这个部分是由2部分组成,数据提供部分和视图部分, 对于这个,可以参看一下:fecshop小部件 ,fecshop小部件,是一种预定义的方式,主要用于头部和尾部等公用的部分,并自带cache缓存功能,详细的参看上面的文档

4.当然,也有一种,是不需要在配置文件中预定义,而是在使用的时候直接引入即可,下面找一个例子讲解,

4.1打开文件:https://github.com/fecshop/yii2_fecshop/blob/master/app/appfront/theme/base/front/catalog/product/index.php

可以看到价格部分的调用,32行

<div class="price_info">
<?php # 价格部分
	$priceView = [
		'view'	=> 'catalog/product/index/price.php'
	];
	$priceParam = [
		'price_info' => $price_info,
	];
?>
<?= Yii::$service->page->widget->render($priceView,$priceParam); ?>

</div>

上面的$priceView,代表是配置部分,上面只配置了view部分,没有class文件配置,说明不需要动态数据部分, 对于存在class的例子可以查看该文件的61行

下来来看Yii::$service->page->widget->render($priceView,$priceParam); ,也就是文件:https://github.com/fecshop/yii2_fecshop/blob/master/services/page/Widget.php ,查看方法 protected function actionRender($configKey, $parentThis = '')

对于上面代码调用传递的参数 $priceParam,被上面的函数的$parentThis接收, 你会发现这个参数在后面并没有被使用,而是在各个子函数中传递,最终被函数 protected function actionRenderContentHtml($configKey, $config, $parentThis = ''), 接收,在代码99行处可以看到

if ($parentThis) {
	$params['parentThis'] = $parentThis;
}
 return Yii::$app->view->renderFile($viewFile, $params);

这里,你应该就明白了,将前面传递的 $priceParam作为 $params['parentThis'] , 对于方法Yii::$app->view->renderFile($viewFile, $params),这个是yii2的方法,和controller里面结尾处的render类似,也就是把数据里面每个数据,作为一个变量,在view中可以直接使用, 因此,对于

$priceParam = [
		'price_info' => $price_info,
	];

就可以在view中使用 $parentThis['price_info'],也就是上面传递的值

可能你对Yii2不熟悉,对于Yii::$app->view->renderFile($viewFile, $params)不了解,这个我之前整理了一个文章: yii2 通过 render , views页面生成显示html的原理

更新产品类属性,返回200,但是查看数据库没改动7年前

1、排版:http://www.fecshop.com/markdown

2.有点看不明白你传递的数据 u'name_ru', 严格按照文档操作,更新分类的api文档为:http://www.fecshop.com/doc/fecshop-guide/develop/cn-1.0/guide-fecshop-api-category-updatene.html 文档有例子数据

3.这个api对应的文件是:https://github.com/fecshop/yii2_fecshop/blob/master/app/appapi/modules/V1/controllers/CategoryController.php public function actionUpdateone() 方法,你自己排查一下

fecshop邮箱登陆怎么切换成手机验证码登录7年前

找到相关文件,自己修改,不熟悉yii2,先去学习yii2知识。

Your Site Analytics