我有一个带有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->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)
];
组中的其他两个单选按钮是相同的,只是具有不同的值和ID。
4条答案
按热度按时间uinbv5nw1#
用这个,
67up9zun2#
在
application/config/autoload.php
中加载用于表单验证的库和其他帮助程序在控制器文件中:
在视图文件中,使用以下代码打印验证错误
kokeuurv3#
上面给出的答案告诉我如何使用表单验证。这不是我所要求的。我远远超出了这一点-因为它们都工作,除了单选按钮。结果是,错误地将验证数组传递给
$data
数组中的函数。一旦我正确地传递了数据,表单验证也工作了。bmp9r5qi4#
嘿,兄弟,试试这个也许能帮上忙这个方法很简单,形式上
设置控制器