CodeIgnitor 3: Проверка формы: «Обязательный» не работает, если за ним следует обратный вызов - PullRequest
0 голосов
/ 15 декабря 2018

Похоже, что codeIgnitor выдает обратный вызов, если предыдущая проверка не удалась.В этом тестовом примере у меня есть простая форма с одним вводом текста.Для пустого ввода правило проверки должно отлавливать «обязательный» и не вызывать обратный вызов.Однако вызывается обратный вызов.

Вот контроллер:

<?php

class DebugCIValidation extends CI_Controller {

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

   function requiredTest(){
      $displayData = array();

         // validation rules
      $this->load->library('form_validation');
      $this->form_validation->set_error_delimiters('<div style="color: red;">', '</div>');
      $this->form_validation->set_rules('txtInfo', '<b>Test Input</b>', 'trim|required|callback_myLittleVerification');

      if ($this->form_validation->run() == FALSE){
         if (validation_errors()==''){
            echo('No errors found');
            $displayData['strTestData'] = '';
         }else {
            echo('Errors found'); 
            $displayData['strTestData'] = set_value('txtInfo');
         }
         $this->load->vars($displayData);
         $this->load->view('debug/ciValidation');
      }else {
         echo('Validation run TRUE');
         die;
      }
   }

   function myLittleVerification($strValue){
      if ($strValue==''){
         echo('IN CALLBACK: REQUIRED FAILED - should not be here!'); die;
      }
      return(true);
   }
}

Вот представление:

<?php

echo(form_open('debug/DebugCIValidation/requiredTest'));
echo('Required Text: <input type="text" name="txtInfo" size="40" value="'.$strTestData.'"><br>');
echo('Detected Error: '.form_error('txtInfo').'<br><br>');
echo('<input type="submit" name="cmdSubmit" value="Test">');
echo(form_close());

Когда я отправляю форму без данных вВ поле ввода выполняется обратный вызов:

IN CALLBACK: REQUIRED FAILED - should not be here!

Если я удалю обратный вызов из правила:

$this->form_validation->set_rules('txtInfo', '<b>Test Input</b>', 'trim|required');

Произойдет правильная проверка формы codeIgnitor:

Detected Error:
The Test Input field is required.
...