Codeigniter соответствует возвращению false - PullRequest
0 голосов
/ 08 февраля 2019

Я пытался сохранить учетную запись в БД.при проверке формы с помощью form_validation она всегда возвращает false, даже когда я пытался вставить правильное значение.вот код

public function save(){
            $params = $this->input->post();

            if(!empty($params['id_account']) && !empty($params['password']) ){

                    $this->form_validation->set_rules('confPass', 'Confirmation Password', 'matches[password]');

            }else{
                $this->form_validation->set_rules('password', 'Password', 'required');
                $this->form_validation->set_rules('confPass', 'Confirmation Password', 'required|matches[password]');
            }


            $this->form_validation->set_data($params);
            $this->form_validation->set_rules('username', 'Username', 'required');
            $this->form_validation->set_rules('id_role', 'Role', 'required');

            if ($this->form_validation->run() == TRUE) {
                unset($params['confPass']);
                $params['account_status'] = array_key_exists('account_status', $params) ? $params['account_status'] : ACCOUNT_STATUS_PENDING;  
                $this->load->model('user_model');
                $this->user_model->save($params);
                $this->session->set_flashdata('notif', 'Berhasil menyimpan data.');
                redirect('rbac/form/account');
            } else {
                $error = validation_errors();

                echo '';
                print_r($error);
                echo '
';var_dump ($ PARAMS [ 'пароль']);var_dump ($ PARAMS [ 'confPass']);умереть();// $ this-> session-> set_flashdata ('notif', '». $ Ошибка. ');// redirect ('rbac / form / account');}}

Я попытался вернуть validation_errors(), $params['confPass'] & $params['password'], и вот результат:

Поле пароля подтверждения не соответствуетполе пароля.

string (1) "e" string (1) "e"

, как вы можете видеть $params['confPass'] и $params['password'] совпадает.

1 Ответ

0 голосов
/ 11 февраля 2019
if(!empty($params['id_account']) && !empty($params['password']) ){
                $this->form_validation->set_rules('confPass', 'Confirmation Password', 'matches[password]');
        }else{
            $this->form_validation->set_rules('password', 'Password', 'required');
            $this->form_validation->set_rules('confPass', 'Confirmation Password', 'required|matches[password]');
        }

Если условие, которое вы написали выше, истинно, т. Е. Управление находится в том случае, если (ниже) блок

if(!empty($params['id_account']) && !empty($params['password']) )

вы не поставили условие для поля «пароль», у вас есть только правило подтверждения пароля,Что не совпадает ни с чем, и хотя пароли совпадают, оно всегда возвращает false.

Вам необходимо добавить правило проверки для пароля

 $this->form_validation->set_rules('password', 'Password', 'required');

перед подтверждением пароля, которое ищет соответствующий пароль.

Если ваше условие гласит, что для него не требуется пароль, вы можете сделать что-то вроде

 $this->form_validation->set_rules('password', 'Password', 'min_length[5]');

что-нибудь, что соответствует вашему условию, но не является «обязательным», например, trim или min_length

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...