2012-04-20 2 views
2

я расширенная CI библиотеки проверки формы следующим образом:Codeigniter расширения библиотеки проверки не работает

class MY_Form_validation extends CI_Form_validation { 

    function __construct($config = array()) 
    { 
     parent::__construct($config); 
    } 

    function check_first_char($str) 
    { 
     $CI =& get_instance(); 
     $first_char = substr($str, 0, 1); 
     if ($first_char != 'P' || $first_char != 'S') 
     { 
      $CI->form_validation->set_message('check_first_char', 'The %s field must begin with P or S!'); 
      return FALSE; 
     } 
     else { 
      return TRUE; 
     } 
    } 

и назвав его как следующее:

$this->form_validation->set_rules('sponsor_id', 'Sponsor ID', 'trim|required|exact_length[7]|check_first_char'); 

Но это не работает. Что я делаю неправильно?

+0

Можете ли вы уточнить, что означает «не работает»? –

+0

Я сделал то, что вы предложили, но он все еще не работает. и не работает, если я передаю значение, отличное от чего-то, начинающегося с P или S, оно не показывает ошибки проверки и анализирует данные в БД. –

+0

Действуют ли какие-либо другие правила валидации? Вы правильно загружаете библиотеку Form_validation? –

ответ

-1

Убедитесь, чтобы инициализировать библиотеку в вашем контроллере:

$this->load->library('form_validation'); 
-1
$this->form_validation->set_rules('sponsor_id', 'Sponsor ID', 'trim|required|exact_length[7]|callback_check_first_char'); 

Если я не ошибаюсь, вы будете нуждаться в 'callback_'

Источник: http://codeigniter.com/user_guide/libraries/form_validation.html

Изменить: вам также потребуется инициализировать библиотеку form_validation.

+0

Я не думаю, что здесь дело, потому что правило проверки определено в расширенном классе Form_validation и * not * контроллере, как в примере, к которому вы привязались. С этой целью он действует как любой из других собственных правил проверки и не нуждается в префиксе 'callback_'. –

+0

О, верно. Я не обратил на это внимания. –

Смежные вопросы