2015-08-03 3 views
2

Я хочу, чтобы проверить, если значение кроме целое и поплавок, я написал форма проверки следующим образом,Как использовать ту же функцию обратного вызова для нескольких текстовых полей в CodeIgniter

$this->form_validation->set_rules('charge_hour', 'Per hour', 'xss_clean|callback_money_type'); 
$this->form_validation->set_rules('charge_day', 'Per day', 'xss_clean|callback_money_type'); 
$this->form_validation->set_rules('charge_weekly', 'Per week', 'xss_clean|callback_money_type'); 
$this->form_validation->set_rules('charge_monthly', 'Per month', 'xss_clean|callback_money_type'); 

и общий функции обратного вызова для всех текст подается в money_type()

public function money_type($charge) 
     { 
      if (is_float($charge) == false && is_int($charge) == false && $charge >= 0) 
      { 
       $this->form_validation->set_message('{WHAT TO ENTER HERE}', 'Enter valid charges for space.'); 
       return FALSE; 
      } 
     else 
     { 
      return TRUE; 
     } 
    } 

Как я могу узнать, что во время проверки {что вводить ЗДЕСЬ}? имя поля - либо charge_hour, charge_day, charge_weekly, charge_monthly во время выполнения? так что проверка формы покажет разные сообщения об ошибках для каждого поля.

Спасибо.

ответ

0

У меня есть ответ, моя ошибка здесь.

{WHAT TO ENTER HERE} Должно быть таким же, как имя функции обратного вызова function money_type, то он будет работать для всех полех обратных вызовов

$ this-> form_validation-> set_message («{ЧТО ENTER ЗДЕСЬ}», «Введите действительные расходы на космос . ');

Должно быть

$ this-> form_validation-> set_message ('money_type', 'Введите действительные расходы на космос.');

0

Вы можете передать имя файла в вашем параметре обратного вызова

$this->form_validation->set_rules('charge_hour', 'Per hour', 'xss_clean|callback_money_type[charge_hour]'); 
$this->form_validation->set_rules('charge_day', 'Per day', 'xss_clean|callback_money_type[charge_day]'); 
$this->form_validation->set_rules('charge_weekly', 'Per week', 'xss_clean|callback_money_type[charge_weekly]'); 
$this->form_validation->set_rules('charge_monthly', 'Per month', 'xss_clean|callback_money_type[charge_monthly]'); 

Вы callbacke функцию

public function money_type($charge,$fild_name) 
     { 
      if (is_float($charge) == false && is_int($charge) == false && 

    $charge >= 0) 
       { 
        $this->form_validation->set_message("{$fild_name}", 'Enter valid charges for space.'); 
        return FALSE; 
       } 
      else 
      { 
       return TRUE; 
      } 
     } 
+0

Я только что проверил форму проверки в CodeIgniter, руководство пользователя по. для справки https://ellislab.com/codeigniter/user-guide/libraries/form_validation.html –

+0

{ЧТО ДЕЛАТЬ ЗДЕСЬ} Должно быть таким же, как функция имени функции обратной связи money_type, тогда она будет работать для всех полей обратных вызовов –

+0

спасибо за help –