如何解决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)){...