Validation Codeigniter4表单验证

Validation Codeigniter4表单验证,validation,codeigniter-4,codeigniter-form-validation,Validation,Codeigniter 4,Codeigniter Form Validation,我正在将我的应用程序从CI3移植到CI4 表单验证有问题。我的目标是仅在提交表单时验证输入。在Codeigniter 3中,a可以执行以下操作: $this->load->library('form_validation'); $this->form_validation->set_rules('username', 'Username', 'required'); if ($this->form_validation->run()) { $usern

我正在将我的应用程序从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 {
    ...
}

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

确保您仅在收到“post”请求时进行验证。 您可以在控制器中使用$this->request->getMethod来检查请求的类型

您可以这样做:

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

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