我正在使用Phils RestServer开发API,我需要验证传入的PUT数据。它工作得很好 传入的POST数据但不是PUT。
如何验证通过PUT发送的数据?
感谢所有输入!
答案 0 :(得分:5)
都能跟得上!不行。你可以做的就是破解它,所以:
$_POST['foo'] = $this->put('foo');
允许CodeIgniter表单验证类验证除POST之外的其他内容在todo列表中(正是出于这个原因)。
答案 1 :(得分:1)
这是我的解决方案。我正在使用表单验证库中的set_data()函数:
$set_data = array(
'username' => $this->put('username'),
'email' => $this->put('email'),
'zipcode' => $this->put('zipcode'),
'telephone' => $this->put('telephone'),
'password' => $this->put('password'),
);
$this->form_validation->set_data($set_data);
$this->form_validation->set_rules($this->Register_model->rules_register);
答案 2 :(得分:0)
我在第一次回答后意识到这一切都取决于您使用的CI版本,如果您使用最新的3.0.0或更高版本,那么您可以在表单验证文件中进行1次小调整。
第176行的set_rules()方法顶部的Form_validation.php文件
FROM:
if ($this->CI->input->method() !== 'post' && empty($this->validation_data)) {
return $this;
}
TO:
if ($this->CI->input->method() !== 'post' && $this->CI->input->method() !== 'put' && empty($this->validation_data)) {
return $this;
}
如果这有帮助,请告诉我。
答案 3 :(得分:0)
使用set_data()可以正常工作。说'MRP'和'IsActive'参数由put请求发送。
$this->form_validation->set_data($this->put());
$this->form_validation->set_rules('MRP', 'MRP', 'numeric|greater_than[0]|less_than[10000]', array());
$this->form_validation->set_rules('IsActive', 'Is Active', 'required|alpha|min_length[2]|max_length[2]', array());
if ($this->form_validation->run() === TRUE) {
// Do Stuff..
}