Переключатель проверки формы CodeIgniter не работает - PullRequest
0 голосов
/ 04 октября 2019

У меня есть форма с 3-мя переключателями. Идентификаторы уникальны в форме, и все три имеют одинаковое имя, а именно «vehicle_type». Переключатели генерируются правильно, когда я делаю вид источника

<input type="radio" name="vehicle_type" id="type_vehicle" value="1">
<input type="radio" name="vehicle_type" id="type_trailer" value="2" checked>
<input type="radio" name="vehicle_type" id="type_plant" value="3">

У меня нет правила проверки для группы радиостанций, но моя форма жалуется на то, что поле является обязательным.

Я могу подтвердитьчто не существует правила проверки при запуске:

echo $this->form_validation->has_rule('vehicle_type');

Это указывает на отсутствие проверки. Использование этого вызова в другом поле, т. Е. Client_name, возвращает «логическое значение: 1»

Почему поле пытается выполнить проверку, если не задано правило проверки?

EDIT

Я использую Wiredesignz HMVC в своем проекте, поэтому класс Form_validation расширен.

        if ($this->form_validation->run($this)) {
            $test = do_file_upload($post_data);
        } else {
            var_dump(validation_errors()); 

            // echos "The Vehicle type field is required"
        }

Эта проблема возникает только с переключателями:

Все остальные формы безпереключатели подтверждают правильность, используя ту же проверку: ($this->form_validation->run($this)

Моя проверка формы устанавливается с помощью этой функции:

public function set_form_validation_rules($data)
{
    foreach ($data as $field) {
        if (!empty($field['validation']['rules'])) {
            if (!is_array($field['validation']['rules'])) {
                $this->form_validation->set_rules($field['name'], $field['label'], $field['validation']['rules']);
            } else {
                foreach ($field['validation']['rules'] as $fv) {
                    $this->form_validation->set_rules($field['name'], $field['label'], $fv);
                }
            }
        }
    }
}

И переключатель определяется как:

        $data['fields']['type_plant'] = [
            'name' => 'vehicle_type',
            'id' => 'type_plant',
            'input_class' => 'input-group width-100',
            'color' => 'red',
            'value' => 3,
            'validation' => '',
            'checked' => ($posts['vehicle_type'] == 3)
        ];

Два других переключателя в группе одинаковы, просто имеют разные значения и идентификаторы.

Ответы [ 3 ]

0 голосов
/ 04 октября 2019

Загрузить библиотеку для проверки формы и другие помощники в application/config/autoload.php

$autoload['libraries'] = array('form_validation');

$autoload['helper'] = array('form', 'url');

В вашем файле контроллера:

$this->form_validation->set_rules('vehicle_type', 'Vehicle Type', 'required');

В вашем файле просмотра используйте приведенный ниже код для печати ошибок проверки

<?php echo validation_errors(); ?>
0 голосов
/ 05 октября 2019

Ответы, приведенные выше, говорят мне, как использовать проверку формы. Это не то, что я просил. Я далеко за пределами этого - как они все работали, кроме радиокнопок. Как выяснилось, неправильная передача массива проверки в функцию в массиве $data. После того, как я правильно передал данные, проверка формы также сработала.

0 голосов
/ 04 октября 2019

Используйте это,

$this->form_validation->set_rules('vehicle_type', 'Vehicle type', 'required');
...