0

予約のリストがあり、複数のチェックボックスを使用してそれらを削除したいと考えています。これが私のコードです:

foreach ($bookings as $booking): ?>
    <tr>
        <td><?php echo h($booking['Booking']['first_name']); ?>&nbsp;</td>
        <td><?php echo h($booking['Booking']['surname']); ?>&nbsp;</td>
        <td><?php echo h($booking['Booking']['created']); ?>&nbsp;</td>
        <td><?php echo $this->Form-> checkbox('Bookings.ID.['.$booking['Booking']['ID'].']', 
        array('value' => $booking['Booking']['ID']));?></td>    
    </tr>
<?php endforeach; ?>

私のコントローラーでは、この関数を使用して選択した予約を削除します。

public function deletebooking(){

    $bookings = $this->Booking->find('all');
    $this->set('bookings',$bookings);
    if(!empty($this->data)){
        foreach($this->data[Bookings] as $key => $value){

            if($value != 0){
                $this->Booking->delete($value);
                $this->redirect(array('action' => 'index'));
            }

        }
    }

}

なぜ機能しないのか誰にも教えてもらえますか?

4

1 に答える 1

1

入力フィールドを次のように変更します: foreach ($bookings as $booking): ?>

<td>
   <?php echo $this->Form->checkbox('bookingids', 
                                      array(
                                        'value' => $booking['Booking']['ID'],
                                        'name' => 'data[Booking][bookingids][]',
                                       ));?>
</td> 

[]名前の値が空であることに注意してください。これにより、その配列の新しいインデックスが作成されます。コントローラーでは、次のようにアクセスします。

   if(!empty($this->data)) :
        foreach($this->data['Bookings']['bookingids'] as $key => $value):
                $data = array();
                $data['Booking']['id'] = $value;
                $this->Booking->delete($data);
        endforeach;
        $this->redirect(array('action' => 'index'));
    endif;
于 2012-12-15T11:29:36.330 に答える