Codeigniter 4验证始终使用getJSON返回false

问题描述

我正在使用ci4来验证从邮递员发送来的json原始文件,但我总是得到错误的结果,请帮我检查一下

        public function create(){
            
            helper(['form','url']);

            $_POST = $this->request->getJSON(true);
            // $_POST = json_decode(file_get_contents("php://input"),true); try not working

            $rules = [
                "product_name" => [
                    'rules' => 'required','errors' => [
                        'required' => 'Product name is required!'
                    ]
                ]
            ];

            if($this->validate($rules)){
                echo true;
            }
            else{
                echo false; // always return false
            }
            die;
        }

        // postman json: { "product_name": "Iphone 12 pro max" }

解决方法

根据docs

该方法在第一个参数中接受一个规则数组,在 可选的第二个参数,一组自定义错误消息 显示项目是否无效。

您正在将两个参数都传递到单个数组中的validate()作为第一个参数,当然,这不能仅仅作为规则集正确地解释。您需要将规则和错误分成单独的数组:

$rules = ["product_name" => 'required'];
$errors = ["product_name" => ['required' => "Product name is required!"]];
if (!$this->validate($rules,$errors)){...

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...