2

私は私の見解でこのコードを持っています:

<input type="checkbox" name="test[]" value="1" <?php echo set_checkbox("test[]", "1") ?> >test1 

<input type="checkbox" name="test[]" value="2" <?php echo set_checkbox("test[]", "2") ?> >test2

これらのチェックボックスは必須ではありませんが、フォームの他のいくつかのフィールドは必須です。フォームを投稿するときに、これらのチェックボックスの状態を維持したいと考えています。チェックボックスの値は、チェックされている場合は POST にありますが、投稿後にフォームが再度読み込まれると、チェックされた状態は保持されません (投稿前にチェックされている場合は、投稿後にチェックされます) . set_checkbox(“test”, “1”) も試しましたがダメでした。他のテキスト フィールドの値は set_value() 関数を使用して保持され、正常に機能しています。

4

6 に答える 6

4

set_checkbox が 3 つのパラメーターを取ることに気付きました。

 set_checkbox(string $checkboxname, string $value, boolean $isChecked);

例えば ​​:

 echo form_checkbox('mycbx[]',
                    $item['id'],
                    set_checkbox('mycbx[]', $item['id'], false)
      );

またはこの方法:

$checkbox = array(
    'name'        => 'mycbx[]',
    'value'       => $item['id'],
    'checked'     => set_checkbox('mycbx[]', $item['id'], false)
);
echo form_checkbox($checkbox);
于 2014-02-20T14:38:31.240 に答える
2

ビューに次のような行を追加します。

<input type="checkbox" name="mycheck[]" value="1" <?php echo set_checkbox('mycheck[]', '1', true); ?> />

上記のコードは、デフォルトでチェックボックスがオンになっていることを前提としています。そうでない場合は、3 番目のパラメーターを false に変更します。

次に、検証でルールのない行を追加します(したがって、codeigniter はそれで何かをしなければならないことを認識します)。次に例を示します。

$this->load->library('form_validation');      
$this->form_validation->set_rules('mycheck[]', 'My message that no one will ever see.', '');

最後に、入力項目を入力状態を介してチェック済みとして明示的に設定しないようにしてください。これにより、codeigniter パラメータがオーバーライドされます。言い換えれば、これをしないでください<input checked />

以上です。魅力のように動作するはずです。

于 2016-01-05T17:42:45.657 に答える
1

[] を set_checkbox メソッド呼び出しから削除します。

詳細な回答については、「フォーム検証が失敗した後に Codeigniter でチェックボックスを再設定する」を参照してください。

于 2013-05-08T09:37:01.833 に答える