本のリストを含むページがあり、すべての行にチェックボックスがあります。(私はcakephp 1.2を使用しています)。
ユーザーが複数の本を保存できるようにしたい。
今のところ、ビューにこのチェックボックスがあります(すべての本のリストを取得するサイクルで):
<?php echo $form->input('salva', array('value' => $cdBiblio['CdBiblio']['codiceBiblio'], 'label' => '', 'type' => 'checkbox')); ?>
このフォーム:<?php echo $form->create('cd_biblios', array('action' => 'save')); ?>
そしてこのボタン:
<?php echo $form->end('Add All');?>
コントローラーには、デバッグ用に次のようなものがあります。
debug($this->data);
foreach($this->data['cd_biblios']['salva'] as $item) {
debug($item);
}
しかし、それは機能していません。
debug($this->data); を使用すると、リストの最後の書籍 ID のみが取得されることに気付きました。複数の本をチェックすると、0 または最後の本の ID が表示されます。次に例を示します。
Array (
[cd_biblios] => Array
(
[salva] => 0
) )
解決済み:
ビューでは、Danial のコードを使用します。
コントローラーでは、次のコードを使用します。
if(!empty($this->data)) {
$item=$this->data;
debug($item);
$dim=count($item['Model']['field']);
$i=0;
for ($i=0;$i<$dim;$i++)
if ($item['Model']['field'][$i]!=0)
{
$data = $this->Session->read('libri');
$data[] = $item['Model']['field'][$i];
$this->Session->write('libri', $data);
}
$this->Session->setFlash(__('I libri sono stati salvati', true));
$this->redirect($this->referer());
}