これはうまくいけば、簡単な質問になるはずです。
フォームには、特定の機能に対してさまざまなユーザーを選択することに関連するチェックボックスがいくつかあります。チェックボックスは次のように作成されます
$this->Form->input("user_select", array(
"type" => "checkbox",
"name" => "data[Registration][User][]",
"id" => "UserId" . $user['User']['id'],
"value" => $user['User']['id'],
"label" => false
));
このフォームが送信されると、登録コントローラーに送信されますが、 request->data 配列には、次の形式でも選択されていないチェックボックスが含まれています。
array(
'Registration' => array(
'Users' => array(
(int) 0 => '0',
(int) 1 => '0',
(int) 2 => '0',
(int) 3 => '0',
(int) 4 => '31',
(int) 5 => '0',
(int) 6 => '11'
),
)
データに問題はありません。ユーザーの 31 と 11 が選択されていることは明らかですが、次の形式の配列が望ましいと思います。
array(
'Registration' => array(
'Users' => array(
(int) 4 => '31',
(int) 6 => '11'
),
)
これにより、処理と検証がはるかに簡単になります。
では、CakePHP には、選択されていないチェックボックスが request->data 配列に表示されるのを防ぐ機能がありますか?