Остановить проверку формы при первом коде ошибки - PullRequest
0 голосов
/ 07 декабря 2018

Я использую CI 3.1.7 и хочу прекратить проверку формы в случае ошибки.Например:

$config = array(
    array(
            'field' => 'username',
            'label' => 'Username',
            'rules' => 'required',
            'errors' => array(
                    'required' => '%s is required',
            ),
    ),
    array(
            'field' => 'password',
            'label' => 'Password',
            'rules' => 'required',
            'errors' => array(
                    'required' => '%s is required',
            ),
    ),
    array(
            'field' => 'email',
            'label' => 'Email',
            'rules' => 'required',
            'errors' => array(
                    'required' => '%s is required',
            ),
    )
);

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

Ответы [ 3 ]

0 голосов
/ 07 декабря 2018

Вы не можете остановить validation->run(), но вы можете управлять отображением сообщения об ошибке.Ограничение: вы не можете показать ошибку рядом с соответствующим полем.Или, я должен сказать, вместо этого, я не могу придумать простой способ показать ошибку рядом с вводом, к которому она относится.

В любом случае, вот как извлечь первое сообщение об ошибке.

if($this->form_validation->run() == FALSE)
{
    $errors = $this->form_validation->error_array();
    // There could be many but grab only the first
    $fields = array_keys($errors);
    $err_msg = $errors[$fields[0]];
}

Если вам нужно имя поля, вы можете использовать это.

$err_field = $fields[0];
0 голосов
/ 07 декабря 2018

Если я правильно понял ваш вопрос ... вы хотите остановиться на первой обнаруженной ошибке проверки формы, тогда вам нужно отредактировать базовую библиотеку проверки формы, что крайне плохая практика, но, к счастью, вы можете расширить ее функциональность и либо отредактировать run() сам метод или создайте свой собственный метод и просто скопируйте код run() и отредактируйте этот блок кода:

    // Execute validation rules
    foreach ($this->_field_data as $field => &$row)
    {
        // Don't try to validate if we have no rules set
        if (empty($row['rules']))
        {
            continue;
        }

        $this->_execute($row, $row['rules'], $row['postdata']);

        // here is the modification
        if(count($this->_error_array) > 0) return true; // error found
    }

теперь он остановит выполнение при обнаружении своей первой ошибки

0 голосов
/ 07 декабря 2018

Проверка чеков

  public function __construct() 
    {
        parent::__construct();

        // load form and url helpers
        $this->load->helper(array('form', 'url'));

        // load form_validation library
        $this->load->library('form_validation');
    }

Или проверка https://code.tutsplus.com/tutorials/codeigniter-form-validation-from-start-to-finish--cms-28768

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