0

我正在将我的应用程序从 CI3 移植到 CI4。

表单验证有问题。我的目标是仅在提交表单时验证输入。在Codeigniter 3中,a 可以:

$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'required');
if ($this->form_validation->run()) {
    $username = $this->input->post('username');
    ...
} else {
    ...
}

然后在我看来,我可以显示我的错误:

echo validation_errors();

或单独显示错误:

echo form_error('username');

如果提交了表单,所有错误都会显示出来。当我第一次访问该页面时,没有显示任何错误。

现在在Codeigniter 4中:

我的控制器是这样设置的:

$validation =  \Config\Services::validation();

$validation->setRule('username', 'Username', 'required|min_length[6]');
if ($validation->withRequest($this->request)->run()) {
    $username = $this->request->getVar('username');
    ...
} else {
    ...
}

验证工作正常,但始终显示错误。即使没有提交表单。

4

1 回答 1

1

确保您仅在“发布”请求时进行验证。您可以$this->request->getMethod()在控制器内部使用来检查它是什么类型的请求。

你可以这样做:

if($this->request->getMethod() == 'post')
{
  // Validation
}
于 2020-05-19T23:51:54.763 回答