0

私は現在、このような入力でデータベースレコードを更新しています

$this->my_model->update($id, $this->input->post()));

(これは、すべての入力に対して検証を実行した後です。「モデル」には、期待されるデータの white_list もあります。)

問題:チェックボックスを更新していて、それが「チェックされていない」(つまり「false」) 場合、そのフィールドはブラウザによって「投稿」されません。

たとえば、checkbox_two をオンにして、checkbox_one をオフのままにすると、$_POST は次のように表示されます。

[field_one] = "some value"
[field_two] = "some value"
[checkbox_two] = 1

したがって、投稿の一部ではないため、私のモデルはそのフィールドを更新しません。

「チェックされた」チェックボックスが「1」として投稿されるため、同じことが逆に発生せず、正しく更新されます。

[field_one] = "some value"
[field_two] = "some value"
[checkbox_one] = 1
[checkbox_two] = 1

質問:各チェックボックスを常に明確にチェックする必要がある以外に、これを処理するためのエレガントなソリューションを持っている人はいますか?

4

1 に答える 1

3
<input type="hidden" name="example" value="FALSE" />
<input type="checkbox" name="example" value="TRUE" />

この練習は簡単で論理的です。チェックボックスがオンの場合、$this->input->post('example') == 'TRUE'そうでない場合は$this->input->post('example') == 'FALSE'.

a に指定された最新の値がname=""前の値をオーバーライドするため、prio checkbox>が与えられますhidden

編集:このソリューションは、Rick Calder のコメントで最も評価の高い回答と同じです。とはいえ、私自身もこの結論に達しました。

于 2012-11-20T11:28:21.927 に答える