2015-04-30 6 views
0

enter image description here У меня есть форма с двумя полямиРасширение правила проверки формы в CodeIgniter

<input type="text" name="total_plots" value="" placeholder="Enter Total plots" /> 
<input type="text" name="available_plots" value="" placeholder="Enter Available Plots " /> 

Доступный участок «available_plots» Значение поля должно быть меньше, чем общие участки «total_plots» значение поля

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

Как сделать заказ?

MY_Form_validation

 <?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

    class MY_Form_validation extends CI_Form_validation { 

     public function __construct() 
     { 
      parent::__construct(); 
      $this->CI =& get_instance(); 
     } 


     public function check_avail($str) 
    { 
     $this->CI->form_validation->set_message('check_avail', 'Available plot should be less than Total plot.'); 
     $total_plots = $this->CI->input->post('total_plots'); 

     //echo '------'.$total_plots; 
     //echo '------'.$str; 

     if($str > $total_plots){ 
      return false; 
     } 
    } 

} // class 

я написал правила в конфигурации

<?php 

$config['plot_settings'] = array(

     array(
       'field' => 'total_plots', 
       'label' => 'Total Plots', 
       'rules' => 'trim|xss_clean' 
     ), 
     array(
       'field' => 'available_plots', 
       'label' => 'Available Plots', 
       'rules' => 'trim|xss_clean|check_avail' 
     ) 


); 

?> 

Контроллер

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

class Plot extends CI_Controller { 


    public function __construct() 
    { 
     parent::__construct(); 
     $this->load->library('Admin_layout'); 
     $this->load->model('admin/plot_model'); 
     $this->config->load('plot_rules'); 
     $this->output->enable_profiler(TRUE); 
     $this->new_name=''; 
    } 


    public function add(){ 


    $this->form_validation->set_rules($this->config->item('plot_settings')); 
    $this->form_validation->set_error_delimiters('<p><b>', '</b></p>'); 


     if ($this->form_validation->run('submit') == FALSE) 
     { 

      $this->admin_layout->set_title('Post Plot'); 
      $this->admin_layout->view('admin/post_plot'); 
     } 


    }//add 
} 
+0

сейчас в правилах будет «обязательный» цена | check_avail » – umefarooq

+0

состояние означает? – umefarooq

+0

, если вы проверяете базу данных, создайте запрос для проверки доступности или не верните ошибку проверки, если она недоступна – umefarooq

ответ

1

Я думаю, что вы можете сделать это без написания обратного вызова или расширение правила проверки ,

CI уже предоставляет правило проверки для проверки значения less_than.

$total_plots = $this->input->post('total_plots'); 

$this->form_validation->set_rules('available_plots', 'Available Plots', "less_than[$total_plots]"); 

Должно работать.

+0

да теперь он работает –

+0

Рад, что он работает. –

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