2011-07-24 17 views
1

CodeIgniterで条件フィールドの検証を手伝ってもらえますか?CodeIgniterの条件付き検証

いくつかの顧客データを収集しようとしており、ユーザーがメールラジオボタンで「はい」を選択した場合、(住所、市区町村、郵便番号などの)フィールドの一部が必須になります。

Iは、以下のように設定/ form_Validation.phpでCodeIgniterのフォーム検証コードを持っている:

$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 

私は/編集顧客コントローラで以下のコードを追加する必要がありますメールオプションで。

誰かがこれを手伝ってくれれば嬉しいです。あなたは、コールバック関数に続いて...あなたのメールオプションの検証ルールとして、

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

ような何かをコールバック関数を可能性が使用することができ

どうもありがとう

よろしく、 PS

答えて

4

持っています

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; 
    } 
} 
+0

ありがとうございます。私はそれを試してみよう... メールオプションの検証ルールと実際のコールバック機能はconfig/form_validation.phpファイルにありますか? – Prats

+0

コントローラに検証ルールを設定しても問題ありません。コールバック関数はコントローラ内に存在する必要があります。ドキュメントをチェックしてください。 –

+0

@Prats、正確には、mail_check()の関数をメールとその他のフィールドの検証規則を設定するコントローラと同じコントローラに置きます。 – toopay