2016-05-20 20 views
2

私は結果の名前がFitとUnfitの2つのラジオボタンを持っています。そしてDetailという名前のフォーム入力。 Unfitがチェックされている場合は、Detailを入力する必要があります。検証をどのように設定するのですか?現在、私はこのようなコントローラでコールバック関数を持っている:ラジオボタンが選択されている場合、妥当性検査を設定Codeigniter

public function _is_detail_required() 
{ 
    $result = $this->input->post('Result', true); 
    if ($result != 'Unfit') { 
     $detail = $this->input->post('Detail', true); 
     if ($result == 'Unfit') { 
      $this->form_validation->set_message('_is_detail_required', '%s harus diisi.'); 
      return false; 
     } 
    } 
    return true; 
} 

を、これは私が詳細に設定された(モデルディレクトリ上)検証ルールです:

$form_rules = array(
array(
     'field' => 'Result', 
     'label' => 'Result', 
     'rules' => 'trim|xss_clean|required|max_length[50]' 
    ), 
array(
     'field' => 'Detail', 
     'label' => 'Detail', 
     'rules' => 'trim|xss_clean|callback__is_detail_required|max_length[50]' 
    ) 
); 

私の問題は、このコールバック関数です動かない。どのように私はこれを修正するのですか?どんな助力も非常に高く評価されます。

答えて

0

私が書いたコールバック関数は、入力フォーム(詳細)が空であるならば、それはチェックdidntは、間違っているので、これが正しいもの

ある
public function _is_detail_required() 
{ 
$result = $this->input->post('Result', true); 
if (! empty($result) && $result == 'Unfit') { 
    $detail = $this->input->post('Detail', true); 
    if (empty($detail)) { 
     $this->form_validation->set_message('_is_detail_required', '%s harus diisi.'); 
     return false; 
    } 
} 
return true; 
} 
1

あなたのフォーム検証でこれを追加しようとすることができます

$CI =& get_instance(); 
if ($CI->input->post('Result') == 'Unfit') { 
    $form_rules[] = array(
     'field' => 'Detail', 
     'label' => 'Detail', 
     'rules' => 'trim|xss_clean|required|max_length[50]' 
    ); 
} 

注:お使いの検証は、あなたのコントローラに配置されている場合、$thisを使用しています。そうでない場合は、代わりに$CI =& get_instance();を使用してください。

+0

私の検証がモデルディレクトリに配置されて、私はあなたの努力をしますコード – HealMee

関連する問題