笨。验证PUT数据

时间:2011-08-11 21:32:33

标签: codeigniter validation

我正在使用Phils RestServer开发API,我需要验证传入的PUT数据。它工作得很好 传入的POST数据但不是PUT。

如何验证通过PUT发送的数据?

感谢所有输入!

4 个答案:

答案 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..
}