Codeigniter4 表单验证

Codeigniter4 form validation

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

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

$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 {
    ...
}

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

确保您仅根据 'post' 请求进行验证。 您可以在控制器中使用 $this->request->getMethod() 来检查它是什么类型的请求。

你可以这样做:

if($this->request->getMethod() == 'post')
{
  // Validation
}