2015-07-17 3 views
1

У меня есть форма, которая динамически добавляет выпадающие поля в зависимости от числа для результатов, возвращаемых db-запросом, который также заполняет выпадающий список.form_validation динамически добавленная форма выпадающего поля codeigniter

Мне нужно проверить правильность этих раскрывающихся полей. Это то, что я в данный момент

мой взгляд

<table>  
<tbody> 
<?php 

      if(!empty($result)) 
      { 
       foreach($result as $row) 
       { 
        echo "<tr>"; 
        echo "<td>" . $row->project_no . "</td>"; 
        echo "<td>" . $row->sws_dwg_no . "</td>"; 
        echo "<td>" . $row->client_dwg_no . "</td>"; 
        echo "<td>" . $row->dwg_title . "</td>"; 
        echo "<td>" . $row->dwg_by . "</td>"; 
        $rev = array('' => $row->dwg_rev); 
        $rev_change = array(
         'A' => 'A', 
         'B' => 'B', 
         'C' => 'C', 
         'D' => 'D', 
         'E' => 'E'     
         ); 
        $dropdown = array_merge($rev,$rev_change); 


        echo "<td>" . form_dropdown('result['.$row->dwg_id.'][temp_dwg_rev]',$dropdown,'', 'id="theSelect' . $row->dwg_id .'"') . "</td>"; 
        echo "<td>" . date('Y/m/d', strtotime($row->dwg_date)) . "</td>"; 
        echo "<td>" . form_checkbox('result['.$row->dwg_id.'][temp_dwg_id]',$row->dwg_id,'', 'id="activate' . $row->dwg_id . '"') . "</td>"; 
        echo "</tr>"; 
?></tbody></table> 

$row->dwg_id возвращает идентификатор таблицы результатов, т.е. 1,2,3 или 4, чтобы сформировать ассоциативный массив.

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

public function issue() 
{ 

    $this->form_validation->set_rules('result[][temp_dwg_rev]', 'Rev ', 'required|callback_rev_change'); 
    $this->form_validation->set_rules('result[][temp_dwg_rev]', 'Rev ', 'required|callback_rev_change'); 
    $this->form_validation->set_rules('result[][temp_dwg_rev]', 'Rev ', 'required|callback_rev_change'); 
    $this->form_validation->set_rules('result[][temp_dwg_rev]', 'Rev ', 'required|callback_rev_change'); 

    if($this->form_validation->run()) 
    { 
     echo "All changed"; 
    } 
    else echo validation_errors(); 
} 

В настоящее время только первый выпадающий проверяется и возвращается ошибка. Я попытался добавить номер идентификатора к имени поля в правиле проверки формы, и произойдет то же самое - будет проверено только первое раскрывающееся меню.

Я хочу, чтобы он работал для всех раскрывающихся полей в форме.

+1

Сколько выпадающий имеющих имя 'temp_dwg_rev' в вашей форме ???? – Saty

+0

Все выпадающие поля, названные 'temp_dwg_rev', но различие происходит от' $ row_dwg_id', который является уникальным номером id. –

+0

Но проверка подлинности CI на имя поля не id – Saty

ответ

1

Я решаю проблему, которая у меня была. Спасибо за ваш интерес. Saty

Вот что я сделал, чтобы решить проблему, которая у меня была. Я использовал цикл foreach, который принимает опубликованные значения $row->dwg_id, чтобы создать имя правила проверки формы. Затем правило совпадает с именем ввода.

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

public function issue() 
{ 
    $rows = array(); 
    $rows = $_POST['result']; 
    $temp_array = array_column($rows, 'temp_dwg_id'); 
    foreach($temp_array as $key => $temp_dwg_id) 
    { 
     $this->form_validation->set_rules('result['.$temp_dwg_id.'][temp_dwg_rev]', 'Rev'.$temp_dwg_id , 'required'); 
    } 


    if($this->form_validation->run()) 
    { 
     //Do stuff. 
    } 
    else{ 
     //Do other stuff. 
    }