【问题标题】:Codeigniter - How to validate dynamic INPUT array?Codeigniter - 如何验证动态输入数组?
【发布时间】:2012-01-02 03:18:55
【问题描述】:

我无法对输入字段数组运行验证。当我提交表单时,它提交正常(数据保存正确),但没有验证(没有错误,没有消息)。

知道我做错了什么吗?

我的看法:

<?php echo form_open('save', array('id' => 'form')); ?>
    <?php foreach ($cars as $row): ?>
        <table>
            <tr>
                <td>
                    <h2>
                        <?php echo $row->cars_name; ?>
                    </h2>
                </td>
                <th>
                    Number
                </th>
                <td>
                    <?php echo form_input("car[$row->cars_id][cars_number]", $row->cars_number); ?>
                </td>
            </tr>
            <tr>
                <td>
                </td>
                <th>
                    Registry
                </th>
                <td>
                    <?php echo form_input("car[$row->cars_id][cars_number_reg]", $row->cars_number_reg); ?>
                </td>
            </tr>
        </table>

    <?php endforeach; ?>
<?php echo form_close(); ?>

我的config/form_validation.php

'test/save' => array(
                array(
                        'field' => 'car[]', // also tried car[][], but no go
                        'label' => 'Field',
                        'rules' => 'alpha|htmlspecialchars|trim'
                     ),
                ),

我的控制器:

function save()
{
    if ($this->form_validation->run() == FALSE) {

        $json['success'] = '0';
        $json['message'] = validation_errors();
        echo json_encode($json);

    } else {

        $car = $this->input->post('car');

        foreach ($car as $k => $v) {

            $data['cars_number']       = $v['cars_number'];
            $data['cars_number_reg']   = $v['cars_number_reg'];

            $cars_id = $k;

            $this->emergency_model->save($data, $cars_id);
        }

        $json['success'] = '1';
        echo json_encode($json);
    }
}

【问题讨论】:

    标签: php arrays validation codeigniter input


    【解决方案1】:

    来自用户指南form_validation

    您必须为验证规则使用“确切”名称。 在您的情况下,验证规则应在 foreach 中生成,与您的视图相同。

    $validation_rules = array();
    foreach($cars as $row){
       $validation_rules[] = array( 'field'=>'car['.$row->cars_id.'][cars_number]',
                                    'Field',
                                    'rules' => 'alpha|htmlspecialchars|trim'
                                  );
    }
    
    $this->form_validation->set_rules($validation_rules);
    

    (注意:此代码未经测试)

    我认为您必须在控制器而不是配置中执行此操作。

    【讨论】:

      【解决方案2】:

      我建议使用本教程中的回调验证函数 in this tutorial

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-12
        • 2016-09-06
        • 1970-01-01
        • 1970-01-01
        • 2013-02-17
        • 2013-05-13
        • 2015-07-06
        相关资源
        最近更新 更多