form_validation动态添加表单下拉字段codeigniter

时间:2015-07-17 07:32:53

标签: forms codeigniter validation dynamic field

我有一个动态添加下拉字段的表单,具体取决于返回结果的数字,也会填充下拉列表。

我需要验证这些下拉字段。这就是我现在所拥有的

我的观点

<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返回结果的表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();
}

目前只验证第一个下拉列表并返回错误。我已经尝试将id号添加到表单验证规则中的字段名称,并且同样的事情发生 - 只验证第一个下拉列表。

我希望它适用于表单中的所有下拉字段。

1 个答案:

答案 0 :(得分: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.
    }