【问题标题】:How to pass array values to controller for validation?如何将数组值传递给控制器​​进行验证?
【发布时间】:2014-08-04 07:01:49
【问题描述】:

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

在第一个视图中,表单输入是这样描述的:

<?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)作为用户的输入。

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

【问题讨论】:

    标签: php arrays forms codeigniter validation


    【解决方案1】:

    我们缺少大量代码,但从您显示的内容来看;\

    $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');
    

    【讨论】:

    • 是的,我确实遗漏了很多代码,因为代码很多。我想我很好地了解了我正在尝试做的事情以及我已经完成的事情。有什么我可以添加的东西可以让事情更清楚吗?谢谢。
    • 也许是echo $si_item. ' '. "$";这一行的输出示例
    • 如果这不是你想要的,print_r($si_items) 在 foreach 之前告诉我们
    • 好的。我编辑了原始问题以显示当我遍历数组时得到的输出。同样,该部分可以正常工作。
    • 假设显示的表单具有正确的名称作为字段名称/id...您是在问如何获取值并在提交表单后循环通过它们进行验证?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    • 2016-01-05
    • 2015-01-23
    • 2021-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多