首页 > 解决方案 > 在 CodeIgniter 4 中显示错误消息

问题描述

我谦虚地寻求有关如何在 CI4 中显示错误消息的帮助。我已经创建了一个这样的控制器:

public function login()
{
    $validation = \config\services::validation();

    $errors  = array('email' => 'bad email',
                'pass' => 'bad pass '); 


    if(!$this->validate(array('email' => 'required',
                         'pass' => 'required')))
    {
        echo view('login', array('validation' => $this->validator));
    }
    else
    {
        print 'success';
    }
}

同时测试了以下每个错误报告功能:

$validation->listErrors();
$validation->listErrors('list');
$validation->showError();
$validation->showError('sigle');
$validation->showError('email');

但是这些功能都不起作用,如果我输入了正确的数据,它会打印成功作为分配但在错误的数据上它都显示相同的错误消息,即:

  1. 在 null 上调用成员函数 listErrors()。
  2. 在 null 上调用成员函数 listErrors()。
  3. 在 null 上调用成员函数 showError()。
  4. 在 null 上调用成员函数 ShowError()。

标签: phpformsvalidationviewcontroller

解决方案


在验证开始之前在控制器中调用表单助手

 helper('form');

我像这样重新安排你的代码

public function login()
    {
        $data = [
            'validation' => \config\services::validation()
        ];

        if ($this->request->getMethod() == "post") { // if the form request method is post
            helper('form');
            $rules = [
                'email' => [
                    'rules' => 'required',
                    'errors' => [
                        'required' => 'bad email'
                    ]
                ],
                'pass' => [
                    'rules' => 'required',
                    'errors' => [
                        'required' => 'bad pass'
                    ]
                ]
            ];

            if (!$this->validate($rules)) {
                echo view('login', array('validation' => $this->validator));
            } else {
                // whatever you want todo 
            }
        }

        echo view('login', $data);
    }

在您的登录视图中,如果您想调用所有错误列表,请使用此方法$validation->listErrors();

如果要调用特定错误,请使用此方法$validation->listErrors('email');

如果要检查是否返回错误的特定字段,请使用此方法$validation->hasError('email'))

我希望这可以帮助您解决问题


推荐阅读