Codeigniter set_value()具有动态多维数组输入

时间:2014-09-09 19:31:45

标签: php codeigniter multidimensional-array

好的,我正在生成一个预先填充了db:

中现有值的表单

查看:

    <tr>
      <td><input name="set[<?php echo $cur_set['id']; ?>][order]" value="<?php echo $cur_set['wo_order']; ?>">
          <input type="hidden" name="set[<?php echo $cur_set['id']; ?>][ex_id]" value="<?php echo $cur_set['ex_id']; ?>"></td>
      <td><input name="set[<?php echo $cur_set['id']; ?>][weight]" value="<?php echo $cur_set['weight']; ?>"></td>
      <td><input name="set[<?php echo $cur_set['id']; ?>][reps]" value="<?php echo $cur_set['reps']; ?>"></td>
    </tr>

示例输出:

    <tr>
      <td><input name="set[3][order]" value="1">
          <input type="hidden" name="set[3][ex_id]" value="1"></td>
      <td><input name="set[3][weight]" value="50.00"></td>
      <td><input name="set[3][reps]" value="5"></td>
    </tr>

因此,我有一系列<tr>个,每个[order], [ex_id], [weight]都可以拥有唯一的“ID”,但所有辅助索引[reps]$this->form_validation->set_rules('set[][order]', 'Sets', 'required'); 的数量都相同。

我无法弄清楚两件事:

  1. 当我不知道[id]将会是什么时,如何应用set_value()语法。
  2. 如何在表单上设置验证规则。我试过了:

    set[][order]
  3. 但它似乎不起作用,因为找不到set[*][order] ...我可以在那里放一些通配符吗?喜欢{{1}}?

    提前致谢。

    乔恩

1 个答案:

答案 0 :(得分:0)

在控制器中,您获取数据并将其存储在变量中(我将其称为$ data),请执行以下操作:

$data = $this->MODEL_NAME->METHOD_NAME();

foreach($data as $set){
    $this->form_validation->set_rules("set[{$set['id']}][order]");
    $this->form_validation->set_rules("set[{$set['id']}][weight]");
    etc...
}