Codeigniter - Как проверить динамический массив INPUT? - PullRequest
1 голос
/ 20 ноября 2011

Я не могу запустить проверку массива полей ввода.Когда я отправляю форму, она отправляется в порядке (данные сохранены правильно), но без проверки (без ошибок, без сообщений).

Есть идеи, что я делаю неправильно?

Мойview:

<?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(); ?>

My 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);
    }
}

Ответы [ 2 ]

0 голосов
/ 18 сентября 2015

Из руководства пользователя 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);

(примечание: этот код не был проверен)

Я думаю, вы должны сделать это в контроллере, а не в конфигурации.

0 голосов
/ 20 ноября 2011

Я предлагаю использовать функцию проверки обратного вызова, как в этом уроке в этом уроке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...