首页 > 解决方案 > CodeIgniter 4 中的无效规则

问题描述

我正在尝试为用户创建更新页面。名字和姓氏已成功更新,但是当我尝试更新密码时,它给了我一个错误,提示该规则不是有效规则。我不明白是什么问题。这是我的个人资料方法。

public function profile()
    {
        $data = [];
        helper(['form']);

        $model = new UserModel();

        if ($this->request->getMethod() == 'post') {
            $rules = [
                'firstname'  => 'required|min_length[3]|max_length[20]',
                'lastname'   => 'required|min_length[3]|max_length[20]',
            ];

            if ($this->request->getPost('password') != '') {
                    $rules['password'] = 'required|min_length[8]|max_length[255]|';
                    $rules['password_confirm'] = 'matches[password]';
                }

            if (! $this->validate($rules)) {
                $data['validation'] = $this->validator;
            } else {

                $newData = [
                    'id'           => session()->get('id'),
                    'firstname'    => $this->request->getPost('firstname'),
                    'lastname'     => $this->request->getPost('lastname'),
                ];
                
                if ($this->request->getPost('password') != '') {
                    $newData['password'] = $this->request->getPost('password');
                }

                $model->save($newData);

                session()->setFlashData('success', 'Successfully Updated');
                return redirect()->to('/profile');
            }

        }

        $data['user'] = $model->where('id', session()->get('id'))->first();

        echo view('templates/logreg/header', $data);
        echo view('profile');
        echo view('templates/logreg/footer');
    }

标签: phpupdatescodeigniter-4validationrules

解决方案


尝试删除此行中的最后一个管道字符:

$rules['password'] = '必需|min_length[8]|max_length[255]|';

-> $rules['password'] = 'required|min_length[8]|max_length[255]';


推荐阅读