Fecshop

第 2 位会员

会员
个人信息
个人简介
Terry
个人成就
  • 发表文章次数 290
  • 发布回复次数 2624
  • 个人主页浏览次数 279
appserver 中的 /customer/login/account 接口无法识别fetch提交的post数据1个月前

@tgy3300 [#13楼](#comment13)

关于三楼部分的代码,先看:http://www.fecshop.com/topic/413

public function getBodyParams()
    {
        if ($this->_bodyParams === null) {
            if (isset($_POST[$this->methodParam])) {
                $this->_bodyParams = $_POST;
                unset($this->_bodyParams[$this->methodParam]);
                return $this->_bodyParams;
            }

            $rawContentType = $this->getContentType();
            if (($pos = strpos($rawContentType, ';')) !== false) {
                // e.g. application/json; charset=UTF-8
                $contentType = substr($rawContentType, 0, $pos);
            } else {
                $contentType = $rawContentType;
            }

            if (isset($this->parsers[$contentType])) {
                $parser = Yii::createObject($this->parsers[$contentType]);
                if (!($parser instanceof RequestParserInterface)) {
                    throw new InvalidConfigException("The '$contentType' request parser is invalid. It must implement the yii\\web\\RequestParserInterface.");
                }
                $this->_bodyParams = $parser->parse($this->getRawBody(), $rawContentType);
            } elseif (isset($this->parsers['*'])) {
                $parser = Yii::createObject($this->parsers['*']);
                if (!($parser instanceof RequestParserInterface)) {
                    throw new InvalidConfigException("The fallback request parser is invalid. It must implement the yii\\web\\RequestParserInterface.");
                }
                $this->_bodyParams = $parser->parse($this->getRawBody(), $rawContentType);
            } elseif ($this->getMethod() === 'POST') {
                // PHP has already parsed the body so we have all params in $_POST
                $this->_bodyParams = $_POST;
            } else {
                $this->_bodyParams = [];
                mb_parse_str($this->getRawBody(), $this->_bodyParams);
            }
        }

        return $this->_bodyParams;
    }

如果 request组件(component)的配置,设置了parsers

'request' => [
            'class' => 'yii\web\Request',
            'parsers' => [
                 'application/json' => 'yii\web\JsonParser',
            ],
        ],

那么上面的代码中 $this->parsers 就是上面设置的值

[
	'application/json' => 'yii\web\JsonParser',
]

到这里,如果$contentType的值为:application/json,那么就会满足条件,下面的代码就会执行。

if (isset($this->parsers[$contentType])) {
                $parser = Yii::createObject($this->parsers[$contentType]);
                if (!($parser instanceof RequestParserInterface)) {
                    throw new InvalidConfigException("The '$contentType' request parser is invalid. It must implement the yii\\web\\RequestParserInterface.");
                }
                $this->_bodyParams = $parser->parse($this->getRawBody(), $rawContentType);
            }

isset($this->parsers[$contentType]) 返回为true

appserver 中的 /customer/login/account 接口无法识别fetch提交的post数据1个月前

@tgy3300 #13楼

你的这部分功能,是fecshop默认的功能,还是你二次开发的功能?

docker-compose biuld 报错 cannot open self /usr/local/bin/docker-compose or archive /usr/local/bin/docker-compose.pkg1个月前

把报错信息写到title里面:cannot open self /usr/local/bin/docker-compose or archive /usr/local/bin/docker-compose.pkg

方便后面的人搜索,如果解决了,可以在评论区写上解决的方法

appserver 中的 /customer/login/account 接口无法识别fetch提交的post数据1个月前

对于php,你的这个数据只能通过 php://input

但是对于Yii2框架,进行了封装,当请求是json的时候,是可以从Yii::$app->request->post()中取出来数据的

我之前有一个对yii2这个方面的分析:http://www.fecshop.com/topic/413

你可以参考debug一下问题原因。

用ip和端口号替换appfront以及appimge的地址,图片地址不请求,是不是跨域问题1个月前

appfront不存在跨域问题,appserver端才存在跨域问题

你单独访问一下这个图片地址,看一下是否可以访问。

应该是nginx配置的问题。

fecshop中如何coll时获取关联数据库的数据1个月前

建议使用多次查询,如果多个产品可以使用in查询

php 扩展安装错误1个月前

@docker11931 #4楼

嗯,您可以到网上在搜一下资料,我的那个安装是基于centos6安装的

php 扩展安装错误1个月前

@docker11931 #2楼 用docker不需要执行上面的命令行的

https://github.com/fecshop/yii2_fecshop_docker

php 扩展安装错误1个月前

建议您用docker部署吧

虽然大家都用linux,但是还是有一些差异,造成了同一个安装方式在不同的linux主机上面会出现执行的差异

用docker容器就不会,建议您用docker安装把。

关于商品的添加和类别1个月前

1.Fecshop产品文档:http://www.fecshop.com/doc/fecshop-guide/instructions/cn-1.0/guide-fecshop_product.html

仔细看,写的很明白

2.产品和分类是多对多的关系,一个分类可以有多个产品,一个产品可以存在于多个分类,菜单中的computer是一个分类,这些都是测试数据,你可以删除掉新建你自己的分类

仔细看帮助文档,你想问的东西,在帮助文档里面都有介绍,很详细。

安装fecshop环境的nginx1个月前

看日志信息啊,log写的很明确

emerg bind() to 0.0.0.0:80 failed (address already in use) 80端口被占用

报错信息不要用截图,截图的内容后面遇到这个问题的人无法搜索到,那么回复这个问题仅仅帮助到一个人,然后这个帖子就陈掉了。

先看一边发帖说明:http://www.fecshop.com/topic/624

appserver 中的 /customer/login/account 接口无法识别fetch提交的post数据1个月前

你二开了代码导致的吧?是你客户端请求的方式不一样导致的,应该和php这边没有关系

自己调试对比吧,解决后这里记录一下如何解决的。

您自己调试吧

appserver 中的 /customer/login/account 接口无法识别fetch提交的post数据1个月前

@tgy3300 #6楼 demo地址发给你了,你自己不会看吗? 注册个账户自己看。

自己解决

(Mac本机)启动docker ,下载安装fecshop出错。1个月前

这不是报错,只是警告不要使用root账户操作,但是使用root账户也是可以的

安装测试数据时出错 (只在特定环境,ubuntu 18.04, mongodb 3.6.3)1个月前

mongodb,我一直用3版本,没这个问题啊

不过解决了问题就好。

appserver 中的 /customer/login/account 接口无法识别fetch提交的post数据1个月前

LoginController继承于 https://github.com/fecshop/yii2_fecshop/blob/master/app/appserver/modules/AppserverController.php#L35

$behaviors['contentNegotiator']['formats']['text/html'] = Response::FORMAT_JSON;

通过

Yii::$app->request->post('password')
和
Yii::$app->request->post('email')

是可以获取的

参看之前的我写的分析:http://www.fecshop.com/topic/413

Your Site Analytics