CodeIgniter условной проверки - PullRequest
1 голос
/ 24 июля 2011

Может кто-нибудь помочь мне с проверкой этого условного поля в CodeIgniter?

Попытка собрать некоторые данные о клиенте, и если пользователь выбирает «Да» в переключателях почты, некоторые поля, такие как (адрес, город, почтовый индекс и т. д.) становится обязательным.

У меня есть код проверки формы CodeIgniter в config / form_Validation.php, как показано ниже:

$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
)

);

У меня есть код ниже, чтобы добавить /изменить клиента:

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

Я не уверен, как сделать адрес, почтовый индекс и другие поля как обязательные, если пользователь выберет «Да» в опции почты.

Это будетбыло бы здорово, если бы кто-то мог помочь мне с этим.

Большое спасибо

С уважением, PS

1 Ответ

4 голосов
/ 24 июля 2011

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

$this->form_validation->set_rules('mail', 'Mail', 'callback_mail_check');

Тогда в функции обратного вызова вы можете получить что-то вроде

function mail_check($str)
{
    if ($str == 'YES')
    {
        $this->form_validation->set_message('mail_check', 'You need to fill other fields.');
        return FALSE;
    }
    else
    {
        return TRUE;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...