【问题标题】:CodeIgniter form validation radio button not workingCodeIgniter 表单验证单选按钮不起作用
【发布时间】:2020-02-02 08:41:55
【问题描述】:

我有一个带有 3 个单选按钮的表单。 ID 在形式上是唯一的,并且三个都具有相同的名称,即“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,返回“boolean: 1”

如果没有设置验证规则,为什么字段会尝试验证?

编辑

我在我的项目中使用了 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-&gt;form_validation-&gt;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)
        ];

组中的其他两个单选按钮是相同的,只是具有不同的值和 ID。

【问题讨论】:

  • 关心edit 的问题并包含处理提交的控制器功能?
  • 完成。我 100% 确定我正确地进行了验证。所有其他表单都正确验证,并且检查是否验证完全相同:$this-&gt;form_validation-&gt;run($this)。如果我去掉单选按钮,表单就会正确验证。
  • 谢谢,但我也有兴趣查看 form_validation 的规则等。
  • 我将它们设置在一个函数中。现在编辑问题。

标签: codeigniter codeigniter-form-validation


【解决方案1】:

使用这个,

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      上面给出的答案告诉我如何使用表单验证。这不是我要求的。我远不止于此-因为它们都起作用了,除了单选按钮。事实证明,将验证数组错误地传递给 $data 数组中的函数。正确传递数据后,表单验证也有效。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-22
        • 1970-01-01
        • 2017-03-16
        • 2020-04-12
        • 2017-07-21
        • 2012-07-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多