2015-04-25 3 views
1

Я использую CodeIgniter! У меня есть 3 переключателя - для выбора роли. Если вы выберете одну из трех переключателей, вы увидите разные выпадающие меню. Я хочу сделать правила проверки - для устранения ошибок проверки эха только для этих выпадающих списков для выбранного вами переключателя. Я попытался с этим, но он не показывает мне никаких ошибок проверки. Во-первых, мои радио кнопки являются:Если условие не работает с проверкой CodeIgniter

<input type="radio" name="role_id[]" onClick='showHide(this, true)' id="radio1" value="1" /> 
 
    
 

 
    $data=array(
 
    'name' => 'role_id[]', 
 
    'value' => '2', 
 
    'id' => 'radio2', 
 
    'onclick' => 'showHide(this, true)' 
 
    ); 
 
    echo form_radio($data); 
 

 
    $data=array(
 
    'name' => 'role_id[]', 
 
    'value' => '5', 
 
    'id' => 'radio5', 
 
'onclick' => 'teachers_show(this, true)' 
 
    ); 
 
    echo form_radio($data);

Мой контроллер:

public function register() 
 
    { 
 
     ​ 
 
if ($this->input->post('role_id[]') === 1){ 
 
     $this->form_validation->set_rules('first_name', First name', 'trim|required'); 
 
     $this->form_validation->set_rules('last_name', 'Last name', 'trim|required'); 
 
     $this->form_validation->set_rules('username', 'username', 'trim|required|min_length[6]|max_length[12]|is_unique[users.username]'); 
 
     $this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[6]'); 
 
     $this->form_validation->set_rules('password2', 'Confirm password', 'trim|required|matches[password]'); 
 
     $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email|is_unique[users.email]'); 
 
     $this->form_validation->set_rules('location', 'Location', 'trim|required'); 
 
     $this->form_validation->set_rules('school[]', 'School', 'required'); 
 
     $this->form_validation->set_rules('class[]', 'Class', 'required'); 
 
     $this->form_validation->set_rules('role_id[]', 'Role', 'required'); 
 
     $this->form_validation->set_rules('class_divisions[]', 'Class division', 'required'); 
 
     $this->form_validation->set_rules('region', 'Region', 'required'); 
 
     $this->form_validation->set_rules('teacher[]', 'teacher', 'required'); 
 
     
 
     } 
 
    ​ 
 
elseif ($this->input->post('role_id[]') === 2){ 
 
     $this->form_validation->set_rules('first_name', First name', 'trim|required'); 
 
     $this->form_validation->set_rules('last_name', 'Last name', 'trim|required'); 
 
     $this->form_validation->set_rules('username', 'username', 'trim|required|min_length[6]|max_length[12]|is_unique[users.username]'); 
 
     $this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[6]'); 
 
     $this->form_validation->set_rules('password2', 'Confirm password', 'trim|required|matches[password]'); 
 
     $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email|is_unique[users.email]'); 
 
     $this->form_validation->set_rules('location', 'Location', 'trim|required'); 
 
     $this->form_validation->set_rules('school[]', 'School', 'required'); 
 
     $this->form_validation->set_rules('class[]', 'Class', 'required'); 
 
     $this->form_validation->set_rules('role_id[]', 'Role', 'required'); 
 
     $this->form_validation->set_rules('class_divisions[]', 'Class division', 'required'); 
 
     $this->form_validation->set_rules('region', 'Region', 'required'); 
 
     
 
     
 
     } 
 
     elseif ($this->input->post('role_id[]') === 5){ 
 
      $this->form_validation->set_rules('all_teachers_show', 'ALL Teachers', 'required'); 
 

 
     } 
 
     if ($this->form_validation->run()==FALSE) 
 
     { 
 
      $this->signup(); 
 
     } 
 
     else 
 
     { ​ 
 
//register 
 
} 
 
}

Если я использую что-то вроде этого:

if ($this->input->post('role_id[]') < 2){​ 
 
      // validation rules 
 
    } 
 
    
 
    if ($this->input->post('role_id[]') >4){​ 
 
      // validation rules 
 
    }

Это показывает мне ошибки проверки, но и для role_id = 1. Для role_id = 5 показаны ошибки проверки, которые относятся к role_id = 1. Не могли бы вы мне помочь? :) Благодаря!

ответ

3

Вы передаете строку 'value' => '2' и пытается сравнить, если identical=== в целое 2, которые оценивают в FALSE. Cast Ваш ввод в указанное целое число и посмотреть, что у вас есть. То есть (int)$this->input->post('role_id[]') === 2.

public function radiobutton() 
{ 
    echo form_open('test/passingthrough'); 
    echo '<input type="radio" name="myradio" value="1" ' . set_radio('myradio', '1', TRUE) . ' />'; 
    echo '<input type="radio" name="myradio" value="2" ' . set_radio('myradio', '2') . ' />'; 
    echo '<input type="radio" name="myradio" value="5" ' . set_radio('myradio', '5') . ' />'; 
    echo form_submit('mysubmit', 'Submit Radio button!'); 
} 

public function passingthrough() 
{ 
    $this->form_validation->set_rules('mysubmit', '', 'required'); 
    $this->form_validation->set_rules('myradio', '', 'required'); 

    if ($this->form_validation->run() == FALSE) { 
     redirect('test/radiobutton', 'refresh'); 
    } else { 
     echo '<pre>', var_dump($this->input->post('myradio')); 
    } 
} 

В этом примере передается значение (и так как это радио, будет один передается значение наверняка) будет то, что вы ищете. Но также, если я получу вас правильно, вам нужны NULL, FALSE или что когда-либо значение для не прошедших значений. Таким образом, вы бы массив всех значений в контроллере действий или модели, и проверить его в цикле Еогеасп для него:

$possible_values = array(1, 2, 5); 
foreach ($possible_values as $p_v) { 
    if ($this->input->post('role_id') == $p_v) { 
     //do what do you want with TRUE 'role_id' 
    } else { 
     //do what do you want with FALSE 'role_id' 
    } 
} 
+0

Я также попытался с: если ($ this-> вход-> пост («ROLE_ID») == 2) {но ошибок не видно. Мое радио buttosn называется «role_id []», и они имеют значения 1, 2 и 5. –

+0

В этом случае '==' вы проверяете, не равны ли данные, не сравнимые с типом данных. Если [is_identical] (http://php.net/manual/en/internals2.opcodes.is-identical.php) или '===' проверяет тип данных (string, integer, boolean ...). – Tpojka

+0

Как проверить, является ли role_id [] равным 1, 2 или 5? –