Can someone please help me with this conditional field validation in CodeIgniter?
Trying to collect some customer data and if the user selects ‘Yes’ in the mail radio buttons, some of the fields such as (address, city, postcode etc) becomes mandatory.
I have the CodeIgniter form validation code in config/form_Validation.php as below:
$config = array ( 'customer/new_customer' => array
(
array ( 'field' => 'firstName', 'label' => 'First Name', 'rules' => 'required' ),
array ( 'field' => 'lastName', 'label' => 'Last Name', 'rules' => 'required'),
array ('field' => 'mail', 'label' => 'Mail', 'rules' => 'required' ),
array ('field' => 'address', 'label' => 'Address','rules' => ''),
//other fields here
)
);
I have the code below in the controller to add/edit customer:
function new_customer()
{
$customer_id = $this->input->post('customer_id');
if ($this->form_validation->run() == FALSE)
{
if(($customer_id != "X") && ($customer_id != "")){
$data['add_or_edit'] = "add";
return $this->edit_customer($customer_id, 'add');
}else {
$data['title'] = "New Customer";
$data['add_or_edit'] = 'add';
$this->load->view('customer_form_view',$data);
}
}else{
$data['firstName'] = $this->input->post('firstName');
$data['lastName'] = $this->input->post('lastName');
if($this->input->post('mail') == "Yes")
{
$data['address'] = $this->input->post('address');
$data['city'] = $this->input->post('city');
//other fields
}
if(($customer_id == 'X') || ($customer_id == ''))
{
//add new customer
$customer_id = $this->customers_model->insertCustomer($data);
redirect("/customer/customerList");
}else{
//edit the customer matching the customerID
$this->customers_model->editCustomer($customer_id, $data);
redirect("/customer/customerlist");
}
}//end validation if
}//end function
I am not sure how to make the address, postcode and other fields as ‘required’ if the user selects ‘Yes’ in the mail option.
It will be great if someone can help me with this.
Thanks a lot
Regards,
PS
You could use callback function, as your mail option validation rule… Something like
Then in callback function, you could have something like