我在尝试使用回调验证功能在视图上显示表单验证错误时遇到问题。如果用户为车辆选项选择“是”,则表单应检查与该车辆选项字段相关的其他必填字段。
在我的控制器中,我有一个简单的函数,它输出表单并从表单中获取数据:
function new_customer_record()
{
if ($this->form_validation->run() == FALSE)
{
// data array has values to be passed to the customer_form_view
$this->load->view('customer_form_view',$data);
}else{
//get data from the post method and save it to the database
}
}
在config文件夹中,我有一个名为from_validation.php的文件,其中的数组中包含验证规则和回调函数,如下所示:
$config = array (
'employee/new_record' => array(
array (
'field' => 'first_name',
'label' => 'First Name',
'rules' => 'required',
),
array (
'field' => 'vehicleOwn',
'label' => 'Own a vehicle',
'rules' => 'required|callback_checkVehicleInfo',
),
),
);
function checkVehicleInfo($str){
if ($str == "Yes"){
$config = array ( 'employee/new_record' => array(
array (
'field' => 'vehicle_model',
'label' => 'Vehicle Model',
'rules' => 'required'
),
array (
'field' => 'vehicle_rego',
'label' => 'Vehicle Rego',
'rules' => 'required'
),
array (
'field' => 'vehicle_type',
'label' => 'Vehicle Type',
'rules' => 'required'
),
),
);
$this->form_validation->set_message('checkVehicleInfo','Please enter your vehicle information');
return FALSE;
}else{
return TRUE;
}
}
在视图中,对于具有“必需”验证规则的每个字段,我都有类似的内容 - 除了车辆必填字段(在回调函数中)之外,其他字段工作正常:
<?php $vehicle_model = @field($this->validation->vehicle_model, $customer- >vehicle_model); ?>
<tr>
<td><label>Vehicle Model</label></td>
<td><input name="vehicle_model" type="text" value="<?php echo ($edit=== true)? $vehicle_model :set_value('vehicle_model'); ?>" size="20" maxlength="20">
<?php echo form_error('vehicle_model'); ?></td>
</tr>
但是我没有显示任何错误消息,验证也没有。
答案 0 :(得分:0)
在new_customer_record()函数之后,你应该添加回调函数(不是在config中,而是在你的控制器中放入checkVehicleInfo函数)。