表单验证不适用于表单 GET 方法

Posted

技术标签:

【中文标题】表单验证不适用于表单 GET 方法【英文标题】:Form validation not working with form GET method 【发布时间】:2020-08-12 11:13:24 【问题描述】:

我正在尝试通过method="GET" 而不是POST 发布我的表单。

Codeigniter 的 form_validation->run() 不起作用。

它没有在视图页面中返回任何form_error

【问题讨论】:

【参考方案1】:

form_validation 的概念是基于使用 POST,因为表单验证函数form_validation->run() 使用 POST 构建其验证数组。

请参阅 Codeigniter public function run() system/libraries/Form_validation.php 的第 417 行附近:

$validation_array = empty($this->validation_data)
          ? $_POST
          : $this->validation_data;

但正如@Hasta Dhana 的回答中所指出的,您可以使用 $_GET 或任何其他数组,例如:

$this->form_validation->set_data($_GET);

如果你想validate an array that does not originate from $_POST data。然后这个数组在 if 子句中取代$this->validation_data

【讨论】:

但是如何验证我的输入? 请关注Form Validation 感谢您的帮助【参考方案2】:

如果你必须使用$_GET,你可以在验证规则之前设置验证数据:

$this->form_validation->set_data($_GET);

见:Validating an Array (other than $_POST)

【讨论】:

感谢您的帮助

以上是关于表单验证不适用于表单 GET 方法的主要内容,如果未能解决你的问题,请参考以下文章

@Valid 表单验证不适用于 Thymeleaf Spring Boot

Spring MVC 表单验证不适用于嵌套的复杂类型

Laravel表单请求验证不适用于getValidatorInstance()

验证组不适用于表单

Symfony2 - 验证不适用于嵌入式表单类型

Yii 客户端验证不适用于 ajax 加载的表单