我有一个动态添加下拉字段的表单,具体取决于返回结果的数字,也会填充下拉列表。
我需要验证这些下拉字段。这就是我现在所拥有的
我的观点
<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号添加到表单验证规则中的字段名称,并且同样的事情发生 - 只验证第一个下拉列表。
我希望它适用于表单中的所有下拉字段。
答案 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.
}