如何将数组值传递给控制器​​进行验证?

时间:2014-06-13 16:36:31

标签: php arrays forms codeigniter validation

我正在尝试将表单输入的值传递给控制器​​以进行验证。使用数组在视图中填充值。问题是我不知道如何从数组中为各个输入获取必要的“名称”值,以便通过验证传递它们。

在第一个视图中,表单输入以这种方式描述:

<?php echo form_checkbox('study_items[]', 'Medical History', FALSE); 
    echo form_label('Medical History', 'Medical History');?>
    <br>
    <?php echo form_checkbox('study_items[]', 'Physical Exam', FALSE); 
    echo form_label('Physical Exam', 'Physical Exam');?>
    <br>
    <?php echo form_checkbox('study_items[]', 'Clinical Assessment', FALSE); 
    echo form_label('Clinical Assessment', 'Clinical Assessment');?>

用户只需检查适用于其特定需求的项目。这将提交给验证控制器,验证控制器在成功验证后,仅将选定的项目发送回数组中的视图,如下所示:

$data['si_items'] = $this->input->post('study_items');

在下一个视图中,示例输入的代码如下所示:

    <?php foreach ($si_items as $si_item) {


        echo $si_item. ' '. "$";

        $data001 = array(

              'name'        => $si_item,
                  'id'          => $si_item,
                  'value'       => '',
                  'maxlength'   => '10',
                  'size'        => '50',
                  'style'       => 'width:100px',

        );

        echo form_input($data001);
        echo '<br>';    
    }

 ?>

并允许用户输入他们选择的项目的金额以满足他们在上一页的需要。

由于此部分代码的示例输出如下所示:

“病历$ _______________ ” “体检$ _______________ ” “临床评估$ _______________

其中空白是用于输入每个项目的价格的文本框。到目前为止,这一切都完美地显示了用户在上一个视图中检查的每个表单输入框和标签。

但是,我不知道如何为每个输入获取'名称'以验证它。验证控制器不会将'$ si_items'识别为名称值。这让我很难过,而且还有办法做到这一点。

在我的验证控制器中,我想检查每个条目是否有一个十进制值(即234.56)作为用户的输入。

有什么想法吗?有没有更有效的方法来做到这一点?

1 个答案:

答案 0 :(得分:0)

我们缺少一大堆代码,但是从你所展示的内容开始; \

$data['si_items'] = $this->input->post('study_items');

是你的学习项目(这是一个数组)的分配,这意味着你的foreach中的调用不应该是

foreach ($si_items as $si_item) {

而是

foreach ($data['si_items'] as $si_item) {

或将您的初始作业更改为以下内容;

$si_items = $this->input->post('study_items');