Отображение ошибки в классе проверки формы CodeIgniter, только если выполняется определенное условие - PullRequest
2 голосов
/ 01 февраля 2010

Во-первых, я бы хотел извиниться за мой плохой английский.

Предположим, у меня есть функция в контроллере, как это:

function confirm()
    {
        $this->load->helper(array('form', 'url'));
        $this->load->library('form_validation');

        $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email|exist[member.email]');
        $this->form_validation->set_rules('secretKey','Secret Key', 'required|callback_secret_check');

        $this->form_validation->set_message('exist',"Email don't exist");
        $this->form_validation->set_message('secret_check','Invalid confirmation code');

        if ($this->form_validation->run() == FALSE)
          {
            // if error, show form and the error msg
            $this->view->full_render('user_confirm') ;
          } else {
            // if all ok
            echo "success" ;
          }
    }

Короче говоря, эта функция используется для проверки электронной почты нового пользователя с помощью кода подтверждения. Так же, как мы нашли на любом сайте, который нуждается в регистрации. Я сделал эту функцию в случае, если какой-либо пользователь предпочитает отправлять свой код подтверждения напрямую, используя форму подтверждения, вместо того, чтобы использовать URL-адрес подтверждения (мы отправляем как URL-адрес подтверждения, так и код подтверждения на его электронную почту)

Только для вашей информации, правило "существовать" - это мое собственное правило, созданное путем расширения класса формы, чтобы проверить, действительно ли отправленное письмо действительно существует. Для правила "callback_secret_check" я создаю функцию обратного вызова (не расширяя класс проверки формы, как первое правило), чтобы проверить, является ли код подтверждения, предоставленный пользователем, действительным.

Теперь предположим, что у меня есть электронная почта пользователя "example@example.com" с кодом подтверждения "12345". Если он отправит «example@example.com» с кодом «22323», система выдаст сообщение об ошибке:

  • неверный код подтверждения

Нет проблем с этим делом.

Но если кто-то отправит «this.is.not.exist@example.com» с любым кодом подтверждения, система выдаст сообщение об ошибке

  • Электронная почта не существует
  • Неверный код подтверждения

я хотел только

  • Электронная почта не существует

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

спасибо за вашу помощь.

1 Ответ

2 голосов
/ 01 февраля 2010

В этом случае не устанавливайте недопустимый код подтверждения на required. Если в поле только 2, вы можете проверить это простым if. Не все дела нужны form_validation.

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