2011-08-10 46 views
2

私はチェックボックスの数を持つフォームのための場所でフォーム検証ルールがあります。CodeIgniterの - チェックボックスフォーム検証

$this->form_validation->set_rules('groupcheck[]', 'groupcheck', 'required'); 

私のチェックボックスのいずれも提出時に確認されていない場合は、私のコードは、検証を過ぎて取得することはありません - 変数が存在しないと>実行:

if ($this->form_validation->run()): 

私はVARのチェックと私の検証ルールを囲む場合は、他のフォーム検証ルールが存在しないとして、検証が渡されません:

if(isset($_POST['groupcheck'])): 
    $this->form_validation->set_rules('groupcheck[]', 'groupcheck', 'required'); 
endif; 

varが存在しない唯一のフォーム変数であるチェックボックスの検証ルールはどのように管理できますか?

よろしくお願いします。

+0

?少なくとも1つのチェックボックスをオンにする必要がある場合、最初のコードはOKです。それが必要ない場合は、それを削除してください... –

+0

@ldiqual - ポインタありがとうございます。 "必須"を削除しましたが、チェックボックスを選択しないと実行されません: 'code' $ this-> form_validation-> set_rules( 'groupcheck []'、 'groupcheck'、 ''); \t \t \t \t if($ this-> form_validation-> run()): echo "test"; – Ben

+0

私が考えることができる唯一のオプションは、隠しフォームフィールドを配置し、それに対して検証することです。そうすれば、検証ルールは常に通り抜けます。しかし、ハックのように見えます。 – Ben

答えて

2

CodeIgniterにはチェックするPOST変数は、例えば、代わりにあなたのコードでこのコードを使用しようとする存在であるかどうかをチェックするために、より良いクラスを提供してCodeIgniterの中で)(ISSETを使用しないでください:

if($this->input->post('groupcheck')): 
    $this->form_validation->set_rules('groupcheck[]', 'groupcheck', 'required'); 
endif; 

CodeIgniterでPOSTとGET変数を使用する方法についてのGuidlineについては、ユーザガイドを参照してください。http://codeigniter.com/user_guide/libraries/input.html

+0

ポインタのおかげでありがとうございましたが、if文でtrueまたはfalseを指定する必要があります。 "if($ this-> form_validation-> run()== TRUE) varが設定されていない場合、フォームの検証が実行される方法を確認してください。 'code' if($ this-> form_validation-> run()): ' code' – Ben

+3

groupcheckをrequiredに設定してグループチェックのチェックボックスを少なくとも1つチェックするので失敗しますその必要があるためにチェックする必要があります。 –

0

私は同じ問題がありました。 チェックボックスをオフにすると、決して投稿されません。あなたのチェックボックスのためのset_rulesを削除し、他のフォーム検証ルールの後に、何かしてみてください:

if ($this->form_validation->run() == TRUE){ // form validation passes 

     $my_checkbox_ticked = ($this->input->post('my_checkbox')) ? yes : no; 
0

FALSEある場合は、$this->form_validation->run()validation_errors()を比較して、それからは何も検証していないので、あなたが何かをするか、警告

を表示することができます
if ($this->form_validation->run() == FALSE) { 
    if (validation_errors()) { 
     echo validation_errors(); 
    } else { 
     echo 'empty'; 
    } 
} 
0

また、送信ボタンを設定する必要があります

$this->form_validation->set_rules('terminos_form', 'TERM', 'required'); 
    $this->form_validation->set_rules('terminosbox', 'TERM BOX', 'callback__acept_term'); 

コールバック

function _acept_term($str){ 
     if ($str === '1'){ 
      return TRUE; 
     } 
      $this->form_validation->set_message('_acept_term', 'Agree to the terms'); 
      return FALSE; 
} 

HTML

`required`は何のためにあるのです
<input type="checkbox" name="terminosbox" value="1"/> 
<button type="submit" name="terminos_form" value="1">NEXT</buttom> 
関連する問題